Dav*_*d B 5 syntax perl foreach
我总是想知道为什么我必须写
foreach my $x (@arr)
Run Code Online (Sandbox Code Playgroud)
代替
foreach my $x @arr
Run Code Online (Sandbox Code Playgroud)
括号的目的是什么?
我只能想到一个具体的原因.以下代码有效:
for ($foo) {
$_++
}
Run Code Online (Sandbox Code Playgroud)
如果你要改变它
for $foo {
$_++
}
Run Code Online (Sandbox Code Playgroud)
那你真的会说
for $foo{$_++}
Run Code Online (Sandbox Code Playgroud)
(即哈希查找).Perl 6通过改变空格与变量一起工作的方式解决了这个问题(你不能说它%foo <bar>和它的意思相同%foo<bar>).
轻率的回答:因为这就是 Larry喜欢的方式,在创建 Perl 5 时也喜欢它。
更严肃的答案:它有助于消除“迭代@arr,将每个值放入$x” ( for $x (@arr)) 和“迭代$x和@arr,将每个值放入$_” ( for ($x, @arr)) 之间的歧义。而且,是的,我意识到后一个版本中的额外逗号即使没有括号也确实可以消除歧义,但对于人类读者来说不太明显,我预计仅依赖它会导致更多错误。
| 归档时间: |
|
| 查看次数: |
985 次 |
| 最近记录: |