我刚刚在GitHub上遇到this。
($config === NULL) and $config = Kohana::config('email');
这相当于
if ($config === NULL) {
$config = Kohana::config('email');
}
这是司空见惯的吗?如果我使用第一种方式立即知道它在做什么,我会期望其他开发人员查看我的代码吗?
答案 0 :(得分:4)
AND是一个PHP逻辑运算符。
($config === NULL) and $config = Kohana::config('email');
具有相同的结果(但有较小的operator precedence )
($config === NULL) && $config = Kohana::config('email');
就个人而言,为了避免任何混淆,我会使用你的第二种方法。
答案 1 :(得分:2)
我花了一秒钟才得到它,但这实际上应该适用于几乎所有的编程语言。因为“和”或“或”运算符被懒惰地评估,如果左边的语句是假的,那么就不需要评估其余的语句,因为整个表达式将始终为false(false和true为false)。同样,您可以使用“或”来完成,但左侧的语句必须为true,然后右侧的将不会进行评估。
PS:在这种情况下,右边的内容实际上不是布尔表达式并不重要;它只会接受$config