繁体   English   中英

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

[英]Is this an acceptable use case of the ternary operator?

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

'void' method 'performAction' result used

我使用的代码是这样的:

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

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

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

我认为这对于三元运算符来说似乎是一个有效的用例。 它不会混淆,易于阅读且简短。

但是,这是设计缺陷吗?

三元运算符是一个返回结果表达式 其目的是在需要“内联条件”时使用,否则将需要您创建一个或两个其他变量。 这样,无论何时使用三元运算符,都希望使用它的结果。

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

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

您实际上在这里所做的就是编写这样的代码,但是会给它带来副作用

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

因此,IDE敦促您使用if..else明确编写副作用代码。 它可以更直接地表达您在这里所做的事情。

说了这么多,这最终取决于您和您的风格。 PhpStorm有其偏好。 如果要覆盖它们,请关闭该特定检查。 但是,这种检查可以帮助您编写更好的代码。 如果您确实忘记在某个地方分配返回值,则会发出警告。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM