问题标签 [ternary-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
2626 浏览

php - 在 PHP 中,是否可以进行条件变量替换?

我想知道在 PHP 中是否可以执行以下操作:

还是我必须执行以下操作?

一般来说,我更喜欢替换而不是串联,因为我发现字符串串联会使字符串过长,从而使字符串更难阅读。

其上下文是我正在根据数据库查询决定默认情况下应该选择 select 标记中的哪个选项。

完整的上下文:

0 投票
3 回答
6374 浏览

ruby - 干燥红宝石三元

我经常遇到这样的情况,我想做一些条件逻辑,然后返回部分条件。如何在不重复真假表达式中的条件部分的情况下做到这一点?

例如:

有什么办法可以避免重复ClassName.method吗?

这是一个真实的例子:

0 投票
4 回答
2495 浏览

php - PHP中的三元运算符和变量重新分配

我已经仔细阅读了关于三元运算符if/else 结构的问题,虽然我知道在正常情况下,在 if/else 结构上使用三元运算符没有性能损失/增益,但我没有看到任何提及这一点情况。特定于 PHP 的语言(但欢迎任何与语言无关的细节)解释器会在以下情况下重新分配值:

由于这将评估为$foo = $foo;效率低下,还是解释器只是忽略/丢弃此评估?

在旁注中,关于:

0 投票
4 回答
1343 浏览

c++ - 三元运算符

是否有任何合乎逻辑的理由可以解释为什么在三元运算符中两个分支必须具有相同的基本类型或可以转换为一个?没有这个规则有什么问题?为什么我不能做这样的事情(这不是最好的例子,但澄清了我的意思):

0 投票
1 回答
903 浏览

java - 使用三元运算符和最终变量时的意外输出

考虑这个代码片段:

运行此代码时,我希望X在您的控制台中看到两个。然而,真正的输出是:

88
X

如果我们看一下关于三元运算符的 Java 规范,我们会发现

如果其中一个操作数是 T 类型,其中 T 是 byte、short 或 char,而另一个操作数是 int 类型的常量表达式,其值可以用 T 类型表示,则条件表达式的类型是 T。

所以第一个输出将'X'char 视为一个int,这就是它打印的原因88

但是,我不确定为什么使用会final改变第二个输出的行为。

0 投票
1 回答
86 浏览

php - 更短/更简洁的代码三元语句

有没有更短、更简洁的方法来写这个?

0 投票
4 回答
259 浏览

c# - 使用三元条件运算符时,为什么编译器会关心 TypeA 是否可转换为 TypeB,反之亦然?

可能重复:
在 C# 中使用条件运算符键入结果

基本上我有一些这样的代码:

在哪里:

这就是为什么我希望上面的语句可以工作,但是它返回了这个编译错误:

无法确定条件表达式的类型,因为 'ImageEditor.ActiveEffectList' 和 'ImageEditor.EffectList' 之间没有隐式转换

0 投票
2 回答
559 浏览

php - 是否可以在 PHP 中为此语句创建三元运算符?

是否可以在 PHP 中为此语句创建三元运算符?

0 投票
3 回答
428 浏览

c++ - C ++中的条件运算符“?:”

为什么这个声明:

不等于:

并且等于:

请给我一些理由。为什么 ?

0 投票
2 回答
4752 浏览

java - 在 Java 的三元运算符中,即使表达式导致错误值,是否可以评估第一个参数?

我最近通过随机临时测试在我的代码中发现了一个不寻常的错误。所以,我为它做了一个测试用例。

这是我的测试用例:

A 和 B 被定义为 java.lang.Integer 类型并具有直接的 setter 方法来将它们的值设置到请求中。

还涉及到枚举。它有一个原始整数值,以及此代码中使用的方法。我将在这里发布相关部分:

现在,这是令人困惑的方法。在该方法上调用测试方法会导致 NPE,但在方法的最后一行。

在测试中,A 和 B 都设置为空。因此,A != null 返回 false。但是,我在 : B 行的行号处收到 NullPointerException。

我的猜测是,由于某种原因,正在评估第一个表达式 Swapper.findSwapperToUse(A).c,因此 A.intValue() 通过自动装箱调用,导致空值出现 NullPointerException。通过调试得知 findSwapperToUse() 没有被调用。

但是,根据这个问题,这不应该发生: Java ternary (immediate if) evaluation

未选择的操作数表达式不会针对条件表达式的特定评估进行评估。

返回 null (B) 不会导致 NullPointerException - 在这里返回 null 结果是完全可以的。

到底他妈发生了什么?

编辑:我忘了补充一点,我通过使用直接的 if 语句更改了代码以避免这种情况 - 以下代码确实按预期工作: