首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将条件运算符替换为&和_~??

如何将条件运算符替换为&和_~??
EN

Stack Overflow用户
提问于 2016-08-30 19:20:01
回答 2查看 456关注 0票数 0

我正在编写表达式解析器,我希望添加条件运算符(?:),我已经修改了&&||,使其与javascript中的onces类似,使用以下代码:

代码语言:javascript
运行
复制
case '&&':
    $stack->push($op1 && $op2 ? $op2 : ($op1 ? $op2 : $op1)); break;
case '||':
    $stack->push($op1 ? $op1 : $op2); break;

所以我想我只需要用foo ? bar : baz代替foo && bar || baz,是否可以使用regex呢?如果可以嵌套运算符,则条件运算符的每个参数都可以具有相同的运算符。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-31 01:49:16

foo && bar || bazfoo ? bar : baz不是等价的。

假设两个foo都是一个被认为是true的值,而bar是一个被认为是false的值。在这种情况下,foo && bar是false,所以第一个表达式的值是baz。另一方面,三元操作符(?:)返回第一个argunent为真时的第二个参数,因此它将返回bar

试试1 && 0 || 21 ? 0 : 2。第一个是2,第二个是0。

求三元运算符的最简单方法是,将三个操作数作为单个运算符。

顺便说一句,op1 && op2可以简单得多地写成op1 ? op2 : op1

票数 2
EN

Stack Overflow用户

发布于 2022-07-23 06:11:33

Hi!您可以将foo ? bar : baz;替换为foo && bar;当且仅当baz === null,其中bar是表达式,总是结果为true。

就像。bar = "this string is always gonna result true";

类似地,您可以在代码中使用||

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39235491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档