私はGitHubでこれに出くわしました。
($config === NULL) and $config = Kohana::config('email');
それは同等ですか
if ($config === NULL) {
$config = Kohana::config('email');
}
これは当たり前のことですか?最初の方法を使用してコードが何をしているかを即座に把握した場合、他の開発者が自分のコードを見ることを期待できますか?
ANDは PHP の論理演算子です。
($config === NULL) and $config = Kohana::config('email');
と同等の結果 (ただし、演算子の優先順位は低くなります) を持ちます
($config === NULL) && $config = Kohana::config('email');
個人的には、混乱を避けるために、2 番目のアプローチを使用します。
取得するのに少し時間がかかりましたが、実際にはほぼすべてのプログラミング言語で動作するはずです。「and」または「or」演算子は遅延評価されるため、左側のステートメントが false の場合、残りのステートメントを評価する必要はありません。これは、式全体が常に false になるためです (false および true は false)。同様に、「or」を使用して実行することもできますが、左側のステートメントが true である必要があり、右側のステートメントは評価されません。
PS:この場合、右側にあるものが実際にはブール式ではないことは問題ではありません。の真の値を取るだけです$config