6

我知道这是可能的,但我在语法上画了一个空白。你如何做类似于以下的事情作为条件。5.8,所以没有开关选项:

while ( calculate_result() != 1 ) {
    my $result = calculate_result();
    print "Result is $result\n";
}

只是类似于:

while ( my $result = calculate_result() != 1 ) {
    print "Result is $result\n";
}
4

4 回答 4

9

您需要添加括号以指定优先!=级高于=

while ( (my $result = calculate_result()) != 1 ) {
    print "Result is $result\n";
}
于 2010-04-22T19:55:02.423 回答
2

kemp有关于优先级的正确答案。我只想补充一点,在循环条件中执行涉及赋值和比较的复杂表达式会使代码很快变得丑陋和不可读。

我会这样写:

while ( my $result = calculate_result() ) { 
    last if $result == 1;
    print "Result is $result\n";
}
于 2010-04-22T19:57:46.610 回答
0

有什么问题:

$_ = 1;
sub foo {
   return $_++;
}
while ( ( my $t = foo() ) < 5 )
{
   print $t;
}

结果 1234

于 2010-04-22T19:56:48.223 回答
0

你很接近...

while ( (my $result = calculate_result()) != 1 ) {
    print "Result is $result\n";
}
于 2010-04-22T19:59:25.873 回答