问题标签 [shorthand-if]

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 投票
3 回答
2739 浏览

asp.net-mvc - 简写 if 语句

以下是否有更短的版本:

使用 ASP.NET MVC,这是在 HTML 页面中

我知道我实际上只写了 3 个额外的字符,只是想知道是否有更好的东西。

0 投票
4 回答
145 浏览

php - 不运行或评估时的简写

我基本上是在我的数据库中检查用户下载限制,如果他们的限制是< 1我想禁用我页面上的输入。

当页面运行时,输入没有被禁用,我的页面上没有任何disabled="1"标记。我已经验证了$page["downloads_left"]它小于 1,确实如此。是 0。

即使我添加了一个要输出的字符串,如果此 IF 语句评估为假,它也不会显示在标记中。

任何人都可以提供任何帮助吗?干杯。

0 投票
2 回答
4598 浏览

java - 多个语句 if 条件为 true 的简写 if

我最近发现了 if 语句的简写,在网上搜索后我找不到明确的答案。

如果条件为真/假,是否可以执行 2 条语句?

例如

鉴于我没有遇到他们使用它的示例,我想这是不可能的,但我不想错过。

0 投票
5 回答
3066 浏览

php - 如果行为不正确,使用速记回显

我正在使用 PHP 编程,我使用“速记 if”将一些 HTML 代码回显到页面上,但它的行为方式很奇怪。

我得到的结果代码是这样的

如您所见,开始列表标签没有显示......但如果我替换第一个句点'。在每一行上用“,”逗号。

所以这行得通,用逗号

我应该在这里使用逗号吗?网上到处都显示一个句号'。

0 投票
1 回答
1314 浏览

javascript - javascript 速记 if else 回调

如果在 javascript 中,长手会看起来:

我的简写版本是:

但它不起作用。

我怎么能?

谢谢

0 投票
1 回答
1104 浏览

cuda - CUDA 的 nvcc 不能正确编译三元运算符/条件简写?

编辑
这是您编译的一个小程序,您可以自己查看这些错误......

运行时MyKernel2,将正确的输出写入数组:

MyKernel1运行时,使用相同的基于三元的 idx 分配,所有结果都为零:

PrintMethod1(使用三元边界)运行时,它会出现段错误,基本上陷入无限循环。注意,这是在主机端!!

运行时PrintMethod2,输出打印正常如上所示。

这是我的编译命令:

关于我唯一的线索是它抱怨两个内核都有一个不正确的参数,尽管它看起来是正确的并且得到了正确的结果MyKernel2

我认为上面的例子几乎是评论者可以根据下面的描述自己尝试的,但它可以节省你编写代码的时间和精力!

让我知道是否还有其他可以发布的内容,以帮助解决这个问题。

原始问题

大多数 C 编译器,由 lang. 标准支持三元运算符。

例如

然而,令人惊讶的是nvcc,当它们在内核中使用时,CUDA 似乎剥离了一些三元运算符并用零替换它们......

我通过申请cuPrintf检查有问题的代码块发现了这一点。例如,假设我有两个内核为它们的输出共享一个全局数组。第一个内核处理第一块元素。第二个内核获得一个偏移量,以指示在数组中跳转多远,以免覆盖第一个内核的元素。偶数和奇数的偏移量不同。

所以我可以写:

但是编写近乎等效的速记语法会更加紧凑和可读(在我看来)。

后一个代码虽然总是会产生一个零,因为 CUDA 的编译器会剪掉速记条件。

我意识到此功能代码被滥用并导致线程分歧,但在简单的情况下,如果编译器正确处理它,它似乎与标准条件没有任何不同。

这是编译器中的错误还是故意不支持?

有谁知道这个功能是否会出现在 CUDA 中?

我很惊讶地发现这是我寻址失败和段错误的根源......

编辑
这是一个标准的 C 功能,我误读并错误地说它是非标准的。

编辑 2
我曾为编译器说“窒息而死”。“死”绝对是不恰当的术语。相反,nvcc完成了编译,但显然已经剥离了基于三元运算符的赋值并将其替换为零。后来这会回来并咬我,因为没有将内容写入正确的位置,而这些位置又被用作双索引方案中的索引。这些索引是在 CPU 端的总结期间使用的,因此段错误发生在 CPU 端,但由编译器截图驱动。

我正在使用编译器 v4.1 并已-O2打开。看来优化器可能正在优化三元运算中使用的变量,这可能是此错误的根源。

容易出错的三元运算与我上面给出的示例几乎相同,但涉及到大量的加法运算。

我计划遵循以下评论者的建议并向 NVIDIA 提交错误报告,但我将这篇文章作为对其他人的警告。

编辑 3

这里有一个稍微净化过的完整声明,它总是产生零:

0 投票
3 回答
309 浏览

javascript - 带有字符索引检查的速记 if

我正在使用简写 if 语句来检查内容中是否有斜体标签。

当该警报弹出时,它显示以下内容: 警报框显示 < i > in string,但返回 false

我究竟做错了什么?

0 投票
2 回答
370 浏览

javascript - javascript 速记语法

我想知道如何用简写来写语句将执行

这个不起作用,但我在插件中多次看到这种语法 - 变量与语句等混合在一起。

有人可以解释正确使用这种速记语法吗? 如果第一个评估为真,我想“执行”而不是“评估”第二个语句!

我知道第一个例子很简单,这个更好,它还使用逗号将语句串起来,我想知道如何学习这种语法。

编辑 我将我的第一个示例更改为在我的代码中使用 && 并且它起作用了,所以,就是这样 - 对于其他阅读的人 - 并且如果使用 window.location,你应该使用绝对 url

我还在这里找到了另一个详细的解释。

谢谢,理查德

0 投票
4 回答
8712 浏览

php - 嵌套速记 if

我无法弄清楚的简写 if 语句有点麻烦

这工作正常,但我想在该语句中再次检查。像这样:

0 投票
1 回答
199 浏览

c# - 看不出为什么这个简单的 if 语句返回 null?

或者如果 if 语句不返回 null - 为什么不能分配这个特定的属性。

例子:

在上述行之后直接命中断点 - 我评估 MyProperty - 它为空!?

我已经三次检查了 MyMethod 的返回,它是真的(返回类型是布尔值)。并且 stringParam 正在 MyMethod 中更新。

假设我刚才所说的在某种程度上是不准确或错误的 - MyProperty 至少应该等于 String.Empty。如果 MyMethod 为真,但我的字符串正在更新 - MyProperty 应该等于“某个字符串”。

为什么它是空的?

在 MyClass 声明中,没有关于访问修饰符的复杂性。这很简单:

注意:虽然我在命名等方面对代码进行了一些简化和修改——这段代码在语法上与我的代码相同。

我试过的

我为此改变了语法,令人惊讶的是(对我来说)它起作用了!?

在评估时,myclass.MyProperty 现在等于预期的更新的 stringParam。

我很想解释为什么。内联 if 语句在输出参数方面的行为是否不同?