課題内Perl ternary条件オペレーターの問題
-
08-06-2019 - |
質問
このスニペットのPerlコード私のプログラムは間違った結果です。
$condition ? $a = 2 : $a = 3 ;
print $a;
どのような価値の $condition
は、出力は常に3,これはなぜなのでしょうか?
解決
このPerl 文書.
ためのPerl演算子の優先順位の決算で解析されているとして
($condition ? $a= 2 : $a ) = 3 ;
です:オペレーターの生産譲渡不能の結果、3が割り当てられの結果が条件です。
が$条件がtrueになること($a=2)=3を$a=3
が$状態がfalseであること($a)=3を$a=3
く、正しく書くこと
$a = ( $condition ? 2 : 3 );
print $a;
また噛んだことで、私たちの望ます。
他のヒント
だいinklingるときの苦しみから優先順位の問題は、トリックアクティPerl思いきた
perl -MO=Deparse,-p -e '$condition ? $a= 2 : $a= 3 ; print $a;'
このケースではただい:
(($condition ? ($a = 2) : $a) = 3);
print($a);
-e syntax OK
...その時点では、"ああ、説明するので"!
だけに答...場合、理由の如何にかかわらず、課題を要の一部であることを条件としか書きたいなのでthusly:
$condition ? ($a=2) : ($a=3);
このように役立つだ割り当に異なる変数に基づくものです。
$condition ? ($a=2) : ($b=3);
という変数が割り当に同じことを何でもこの:
($condition ? $a : $b) = 3;
ためのPerl演算子の優先順位の決ているとして構文解析:
($condition ? $a = 2 : $a ) = 3 ;
です:オペレーターの生産譲渡不能の結果、3が割り当てられの結果が条件です。
が$条件がtrueになること$a=2=3の贈$a=3
が$状態がfalseの場合はこ$a=3を$a=3
く、正しく書くこと
$a = $condition ? 2 : 3;
一般的に、いく癖の利用条件分岐な課題としての独自の例--そういうことにつながるPerlっている書き込みます。
経験則と条件分岐における単純値でなければならない表現です。ときや他の誰かに読このコードヶ月から現在いただけますでしょう。で読はこのような態度を取るのか。
$x < 3 ? foo($x) : bar($y);
やはこのような態度を取るのか。
if ($x < 3) {
$foo($x);
} else {
$bar($y);
}
一提案Tithoniumの回答以上
だいたい割り当て異なる価値観を同じ変数に、この方が良いかもしれない(コピーのブックの方法):
$a=($条件なし)?2:3;