¿Cómo almacena el resultado a una variable y comprueba el resultado en un condicional?
Pregunta
Sé que es posible, pero estoy dibujando un espacio en blanco en la sintaxis. ¿Cómo se hace algo similar a lo siguiente como una condicional. 5.8, por lo que no hay opción Cambiar:
while ( calculate_result() != 1 ) {
my $result = calculate_result();
print "Result is $result\n";
}
Y algo similar a:
while ( my $result = calculate_result() != 1 ) {
print "Result is $result\n";
}
Solución
Es necesario añadir paréntesis para especificar precedencia que !=
tiene mayor prioridad que =
:
while ( (my $result = calculate_result()) != 1 ) {
print "Result is $result\n";
}
Otros consejos
Kemp tiene la respuesta correcta acerca de prioridad. Yo acababa de añadir que hace expresiones complejas que implican ambas asignaciones y comparaciones en una condición de bucle puede hacer que el código ilegible feo y muy rápidamente.
Yo escribiría así:
while ( my $result = calculate_result() ) {
last if $result == 1;
print "Result is $result\n";
}
¿Qué hay de malo en:
$_ = 1;
sub foo {
return $_++;
}
while ( ( my $t = foo() ) < 5 )
{
print $t;
}
resultados en 1234
estaban cerca ...
while ( (my $result = calculate_result()) != 1 ) {
print "Result is $result\n";
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow