我看到了一个用作参数的文档,里面有方形托架操作员。看起来像:
method(<<EOF)[0][0]
lots of text
EOF
方托机操作员的含义是什么?有人知道什么样的成语吗?
问题在于,赫尔多克(Heredocs(的结构有些混乱,可以打破代码的正常流动。Heredoc的含量在<<EOF
之后立即开始在线上开始,打开Heredoc并在关闭Heredoc的EOF
结束,但包含Heredoc的表达式正常从左到右继续。
:
的结构method(<<EOF)[0][0]
lots of text
EOF
实际上更像是这样:
/<<EOF
|lots of text|
|lots of text|
method|lots of text|[0][0]
|lots of text|
|lots of text|
EOF /
斜线和垂直条是绘制非常高的ASCII艺术括号的粗略尝试;或者,如果您有适当的Unicode字体:
⎛<<EOF ⎞
⎜lots of text⎟
⎜lots of text⎟
method⎜lots of text⎟[0][0]
⎜lots of text⎟
⎜lots of text⎟
⎝EOF ⎠
您可以将Heredocs视为一个有趣的双引号(或%Q(...)
(如果您愿意的话((,而不是像您的其余代码一样垂直而不是水平地进行。
(IMO(写作更加一致:
method(<<EOF
lots of text
EOF)[0][0]
,但赫里多克斯的历史悠久(一直回到/bin/sh
(。
回到真正的问题:该表达式的[0][0]
部分根本不在Heredoc内部,仅应用于method("lots of textnlots of textn...")
返回的内容。