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