1

私はGitHubでこれに出くわしました。

 ($config === NULL) and $config = Kohana::config('email');

それは同等ですか

if ($config === NULL) {
    $config = Kohana::config('email');
}

これは当たり前のことですか?最初の方法を使用してコードが何をしているかを即座に把握した場合、他の開発者が自分のコードを見ることを期待できますか?

4

2 に答える 2

4

ANDは PHP の論理演算子です。

($config === NULL) and $config = Kohana::config('email');

と同等の結果 (ただし、演​​算子の優先順位は低くなります) を持ちます

($config === NULL) && $config = Kohana::config('email');

個人的には、混乱を避けるために、2 番目のアプローチを使用します。

于 2010-03-19T04:57:52.833 に答える
2

取得するのに少し時間がかかりましたが、実際にはほぼすべてのプログラミング言語で動作するはずです。「and」または「or」演算子は遅延評価されるため、左側のステートメントが false の場合、残りのステートメントを評価する必要はありません。これは、式全体が常に false になるためです (false および true は false)。同様に、「or」を使用して実行することもできますが、左側のステートメントが true である必要があり、右側のステートメントは評価されません

PS:この場合、右側にあるものが実際にはブール式ではないことは問題ではありません。の真の値を取るだけです$config

于 2010-03-19T05:04:42.027 に答える