还行吧:
$foo++ if $condition;
这没关系:
$foo++ for (1..10);
但这不是:
$foo++ if $condition for (1..10);
如果事情不复杂,我发现后者非常可读,而且它适合一行!有没有办法做到这一点,或者我应该继续我的生活?
还行吧:
$foo++ if $condition;
这没关系:
$foo++ for (1..10);
但这不是:
$foo++ if $condition for (1..10);
如果事情不复杂,我发现后者非常可读,而且它适合一行!有没有办法做到这一点,或者我应该继续我的生活?
每个语句只能有一个后缀操作。但是你可以通过使用一个块来做你想要的(排序)do
,例如
do { $foo++ if $condition } for ( 1..10 );
就个人而言,我发现这种风格非常混乱且难以阅读。如果我是你,我会避免它。如果你要解决所有这些麻烦,你不妨说
for( 1..10 ) { $foo++ if $condition }
恕我直言。
实现与 if 语句相同效果的另一种方法是 with and
,所以你可以说
$condition and $foo++ for 1 .. 10;
但是,这不是一种鼓励的做法。
据我了解,这是 perl 早期的一个有意设计决定,以避免人们编写难以阅读或难以获得正确的代码。Perl 6 将允许至少一些组合(if/for 和 for/if,但不允许 for/for 或 if/if/if 也许?),我相信 Perl 5 会在某个时候效仿。
更新:Perl 6 将允许循环内的条件(例如EXPR if EXPR for LIST
);更多需要额外的括号(例如( EXPR for LIST ) if EXPR
)。