问题标签 [conditional-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 投票
12 回答
13033 浏览

delphi - Delphi 中是否存在或将来会有条件运算符?

我猜,我对 Delphi 的控制太久了。在过去的几年里,我一直忙于 Java 和 PHP。现在,当我重新开始做一点 Delphi 工作时,我意识到我真的很怀念 Java 和 PHP 都支持的条件运算符。

在你的 Delphi 程序中,你会在多少地方找到这样的行?

哪里有一个简单的

就足够了。我喜欢的是它不仅缩短了代码,而且我还避免声明一些辅助s:string变量。

为什么条件运算符不是 Delphi 的一部分,并且 - 它们会得到支持吗?我注意到为 2009 版的 Delphi(泛型)做了很多语言扩展,那么为什么不添加这个功能呢?

0 投票
9 回答
3888 浏览

java - 使用条件运算符选择哪个对象调用特定方法?

我有两个集合,并且根据是否满足某些条件将项目添加到这些集合中的一个或另一个。

不知不觉中,我偶然发现了写作是合法的事实

代替

虽然第一个让我觉得自己很聪明(总是加分),但我不确定长期的可读性、可维护性等。我看到的基本优势是,如果我知道我总是会做同样的事情,它成为更改方法的一个位置(而不是两个,或者如果我通过条件运算符实现 switch 语句,则可能是多个)。当情况并非如此时,就会出现主要的缺点(即,我需要为某些情况而不是其他情况添加方法调用)。

您认为这两种方法(或其他解决方案)的优缺点是什么?

如果您不认为使用条件运算符来设置调用方法的对象的这个特定实例是正确的选择,那么在某些情况下它是合理的吗?

0 投票
3 回答
47468 浏览

php - 什么是?:在 PHP 5.3 中?

可能重复: 什么是 PHP 运算符“?” 和“:”调用,他们做什么?

来自http://twitto.org/

自 PHP 5.3 起,Twitto 使用了几个可用的新功能:

  1. DIR常数_
  2. 运营商
  3. 匿名函数

  1. 在 PHP 5.3中,数字 2 对?:有什么作用?

  2. 另外,匿名函数是什么意思?那不是已经存在了一段时间的东西吗?

0 投票
12 回答
218438 浏览

c# - 什么是 IF 语句中的 OR 运算符

在 C# 中,如何指定 OR:

我在帮助中找不到。

更新:

我的代码是:

我的错误是:

错误 1 ​​运算符“||” 不能应用于 'bool' 和 'string' 类型的操作数 C:\Documents and Settings\Sky View Barns\My Documents\Visual Studio 2005\Projects\FOL Ministry\FOL Ministry\Downloader.cs 63 21 FOL Ministry

0 投票
5 回答
53714 浏览

ruby - 没有 else 的 Ruby 三元运算符

“If do-this”和“do-this”是否有一个简单的命令?

例如,我目前正在做

将 else 子句留空,但我觉得可能有一种更惯用的方式来执行此操作,而不必在末尾指定 nil。(或者,我觉得在这种情况下占用多行代码会很浪费。

0 投票
4 回答
3382 浏览

php - 可以在 php 中对条件语句进行赋值吗?

你可以在 php 中对条件语句进行赋值吗:

0 投票
3 回答
5616 浏览

c# - 条件运算符不能隐式转换?

我对这个小小的 C# 怪癖有点难过:

给定变量:

以下编译:

但这不会:

错误说:“不能将类型'int'隐式转换为'byte'。”

当然,这个怪物会编译:

这里发生了什么?

编辑:

使用 VS2008,C# 3.5

0 投票
2 回答
78 浏览

mysql - 这个 MySQL 查询有问题吗?

我正在尝试更新一个编码很糟糕的网站,我认为这个多重 IF 语句中有一个错误。我已经用谷歌搜索了一段时间,在 MySQL UPDATE 查询中找不到多个 IF 的任何示例。

这个想法是,我们想根据行的不同列更新行的某一列。

这是查询:

任何帮助是极大的赞赏。

0 投票
5 回答
174 浏览

boolean - 布尔表达式中操作数的首选顺序是什么?

结构化布尔表达式有什么好处,例如:

代替

我一直使用第二种方法,总是将变量作为第一个操作数并使用任何有意义的布尔运算符,但最近我阅读了使用第一种方法的代码,在克服了最初的怪异之后,我开始喜欢它了更多。

现在我已经开始编写我所有的布尔表达式,只使用<或者<=即使这意味着变量不是第一个操作数,就像上面的例子一样。对我来说,它似乎增加了可读性,但这可能只是我 :)

其他人对此有何看法?

0 投票
8 回答
7240 浏览

c# - 条件运算符慢吗?

我正在查看一些代码,其中每个案例都有一个巨大的 switch 语句和一个 if-else 语句,并立即感到优化的冲动。作为一个优秀的开发人员应该做的,我开始着手了解一些时间上的事实,并从三个变体开始:

  1. 原始代码如下所示:

    /li>
  2. 第二个变体转换为使用条件运算符:

    /li>
  3. 使用预填充键/字符对的字典的转折:

    /li>

注意:这两个 switch 语句具有完全相同的大小写,并且字典具有相同数量的字符。

我期待 1) 和 2) 在性能上有点相似,而 3) 会稍微慢一些。

对于运行两次 10.000.000 次迭代以进行预热然后计时的每种方法,令我惊讶的是,我得到以下结果:

  1. 每次调用 0.0000166 毫秒
  2. 每次调用 0.0000779 毫秒
  3. 每次调用 0.0000413 毫秒

怎么会这样?条件运算符比 if-else 语句慢四倍,​​几乎比字典查找慢两倍。我在这里遗漏了一些重要的东西还是条件运算符天生很慢?

更新 1:关于我的测试工具的几句话。我在 Visual Studio 2010 的Release编译 .Net 3.5 项目下为上述每个变体运行以下(伪)代码。代码优化已打开,DEBUG/TRACE 常量已关闭。在进行定时运行之前,我会运行一次被测方法进行热身。run 方法执行该方法进行了大量迭代,shift设置为 true 和 false,并使用一组选择的输入键:

Run 方法如下所示:

更新 2:进一步挖掘,我查看了为 1) 和 2) 生成的 IL,发现主开关结构与我预期的相同,但外壳主体略有不同。这是我正在查看的 IL:

1) if/else 语句:

2)条件运算符:

一些观察:

  • 条件运算符在shift等于 true 时分支,而 if/else 在shift为 false 时分支。
  • 虽然 1) 实际上编译为比 2) 多一些指令,但在shift为真或假时执行的指令数对于两者来说是相等的。
  • 1) 的指令顺序是始终只占用一个堆栈槽,而 2) 总是加载两个。

这些观察是否暗示条件运算符的执行速度会变慢?还有其他副作用起作用吗?