是否可以使用“圆括号”语法将代码块传递给子?Perl - 通过代码块作为圆括号内的参数
I.e.当我写
List::MoreUtils::any { defined ($_) } (undef, undef, 1);
它的工作原理。但是当我尝试添加括号时
List::MoreUtils::any ({ defined ($_) } , (undef, undef, 1));
这被解释为一个匿名散列,给出一个错误消息。无论是逃避还是使用eval都无济于事。
后面所有忙乱的想法是,如果该呼叫是一个表达式的一部分,即
if (first_index { defined (${$_})} $jms_positions > $jms_positionals_seen)
一些运算符之后的参数可能会在呼叫之前执行,从而产生不期望的结果。
不知何故,这个工程。我认为一个'sub'需要在一个块内的return语句来向主叫方提供任何东西。令人惊讶的是,它不是! Perl的语法确实是我见过的最奇怪的语法。 – 2011-03-07 19:53:27
'sub {42}; '返回42. – Dallaylaen 2011-03-07 20:47:47
=> parens不会关闭原型。为此,你还需要'&'sigil。在这种情况下,parens只是混淆perl的解析器。 – 2011-03-07 22:21:00