質問

このスニペットの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;

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top