【问题标题】:PHP shorthand syntaxPHP 速记语法
【发布时间】:2010-03-19 13:04:42
【问题描述】:

我刚刚在 GitHub 上遇到了this

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

是不是相当于

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

这是家常便饭吗?如果我使用第一种方法来立即知道它在做什么,我会期望其他开发人员查看我的代码吗?

【问题讨论】:

    标签: php syntax kohana-3


    【解决方案1】:

    AND 是 PHP 逻辑运算符。

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

    具有与

    相同的结果(operator precedence 较小)
    ($config === NULL) && $config = Kohana::config('email');
    

    就个人而言,为了避免任何混淆,我会使用您的第二种方法。

    【讨论】:

      【解决方案2】:

      我花了一秒钟才搞定,但这实际上应该适用于几乎所有编程语言。因为“and”或“or”运算符是惰性求值的,如果左边的语句为假,则无需对其余语句求值,因为整个表达式将始终为假(假且真为假)。同样,您可以使用“或”来执行此操作,但左侧的陈述必须为真,然后右侧的陈述不会被评估。

      PS: 在这种情况下,右边的不是真正的布尔表达式并不重要;它只会采用$config的真值

      【讨论】:

      • 谢谢,这个解释帮助我更好地理解了。
      猜你喜欢
      • 1970-01-01
      • 2012-08-27
      • 2014-11-15
      • 1970-01-01
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 2018-01-12
      相关资源
      最近更新 更多