Как Вы храните результат к переменной и проверяете результат в условное выражение?

Я знаю, что это возможно, но я терплю неудачу на синтаксисе. Как дела что-то подобное следующему как условное выражение. 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";
}
6
задан brian d foy 2 October 2013 в 02:56
поделиться

4 ответа

Вам нужно добавить круглые скобки, чтобы указать приоритет как ! = имеет более высокий приоритет, чем = :

while ( (my $result = calculate_result()) != 1 ) {
    print "Result is $result\n";
}
9
ответ дан 9 December 2019 в 22:30
поделиться

kemp дает правильный ответ о приоритете. Я бы просто добавил, что выполнение сложных выражений, включающих как присваивания, так и сравнения в условии цикла, может очень быстро сделать код некрасивым и нечитаемым.

Я бы написал это так:

while ( my $result = calculate_result() ) { 
    last if $result == 1;
    print "Result is $result\n";
}
2
ответ дан 9 December 2019 в 22:30
поделиться

Что не так с:

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

приводит к 1234

0
ответ дан 9 December 2019 в 22:30
поделиться

Вы были близки ...

while ( (my $result = calculate_result()) != 1 ) {
    print "Result is $result\n";
}
0
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: