我使用三元运算符执行一个非常简单的条件操作。它运行良好,但我的IDE(PHPStorm)报告它是一个错误。我得到的错误是:
'void' method 'performAction' result used
我使用的代码是:
($this->doThis ? $class->performAction() : $class->performDifferentAction());
PHPStorm中的错误显然是错误的;我没有在任何地方使用void方法的结果。我只是调用方法,并按预期工作。我只是使用三元运算符作为简写:
if($this->doThis)
{
$class->performAction();
}
else
{
$class->performDifferentAction();
}
我认为这看起来像是三元运算符的有效用例。它没有混淆,易于阅读和简短。
这是一个设计缺陷吗?
答案 0 :(得分:3)
三元运算符是表达式,它返回结果。它的目的是在"内联条件下使用"需要,否则你需要创建一个或两个额外的变量。因此,无论何时使用三元运算符,您都希望使用其结果。
例如,你不会写这个,对吗?
1 + 2; // result not used, does nothing
你实际上在做什么就是编写这样的代码,但是为它添加副作用:
1 + someFunc(); // soooo... does this do anything?
因此,您的IDE会强烈要求您使用if..else
显式编写副作用代码。它更直接地表达了你在那里做的事情。
说了这么多,这最终取决于你和你的风格。 PhpStorm有其偏好;如果要覆盖它们,请关闭该特定检查。但是,检查可以帮助您编写更好的代码;如果你真的忘了在某个地方指定一个返回值,它会警告你。