我知道这是可能的,但我在语法上画了一个空白。你如何做有条件的类似以下的事情。 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";
}
答案 0 :(得分:9)
您需要添加括号以指定优先级,因为!=
的优先级高于=
:
while ( (my $result = calculate_result()) != 1 ) {
print "Result is $result\n";
}
答案 1 :(得分:2)
kemp有关于优先权的正确答案。我只是补充说,在循环条件下执行涉及赋值和比较的复杂表达式会使代码变得丑陋且难以读取。
我会这样写:
while ( my $result = calculate_result() ) {
last if $result == 1;
print "Result is $result\n";
}
答案 2 :(得分:0)
出了什么问题:
$_ = 1;
sub foo {
return $_++;
}
while ( ( my $t = foo() ) < 5 )
{
print $t;
}
结果为1234
答案 3 :(得分:0)
你很亲密......
while ( (my $result = calculate_result()) != 1 ) {
print "Result is $result\n";
}