首页 文章

这是三元运算符的可接受用例吗?

提问于
浏览
0

我使用三元运算符执行一个非常简单的条件操作 . 它运行良好,但我的IDE(PHPStorm)报告它是一个错误 . 我得到的错误是:

'void' method 'performAction' result used

我使用的代码是这样的:

($this->doThis ? $class->performAction() : $class->performDifferentAction());

PHPStorm中的错误显然是错误的;我没有在任何地方使用void方法的结果 . 我只是调用方法,并按预期工作 . 我只是使用三元运算符作为简写:

if($this->doThis)
{
    $class->performAction();
}
else
{
    $class->performDifferentAction();
}

我认为这看起来像是三元运算符的有效用例 . 它没有混淆,易于阅读和简短 .

这是一个设计缺陷吗?

1 回答

  • 3

    三元运算符是返回结果的表达式 . 它的目的是在需要"inline condition"时使用,否则需要您创建一个或两个附加变量 . 因此,无论何时使用三元运算符,您都应该使用其结果 .

    例如,你不会写这个,对吗?

    1 + 2;  // result not used, does nothing
    

    你在这里做的是编写这样的代码,但是为它添加一个副作用:

    1 + someFunc();  // soooo... does this do anything?
    

    因此,IDE会强烈要求您使用 if..else 显式编写副作用代码 . 它更直接地表达了你在那里做的事情 .

    说了这么多,这最终取决于你和你的风格 . PhpStorm有其偏好;如果要覆盖它们,请关闭该特定检查 . 但是,检查可以帮助您编写更好的代码;如果你真的忘了在某处分配一个返回值,它会警告你 .

相关问题