我需要根据a
条件设置值。
使用 CoffeeScript 执行此操作的最短方法是什么?
例如,这就是我在 JavaScript 中的做法:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
我需要根据a
条件设置值。
使用 CoffeeScript 执行此操作的最短方法是什么?
例如,这就是我在 JavaScript 中的做法:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
由于一切都是表达式,因此会产生一个值,因此您可以使用if/else
.
a = if true then 5 else 10
a = if false then 5 else 10
您可以在此处查看有关表达式示例的更多信息。
a = if true then 5 else 10
a = if false then 5 else 10
请参阅文档。
在几乎任何语言中,这都应该起作用:
a = true && 5 || 10
a = false && 5 || 10
Coffeescript不支持javascript 三元运算符。这是咖啡脚本作者的原因:
我和下一个家伙一样喜欢三元运算符(实际上可能更多一点),但语法并不是让它们变得好的原因——它们很棒,因为它们可以将 if/else 放在一行中作为表达。
它们的语法只是另一种难以记忆的神秘魔法,与该语言中的其他任何东西都没有相似之处。结果是相等的,我宁愿
if/elses
看起来总是一样的(并且总是被编译成一个表达式)。因此,在 CoffeeScript 中,即使是多行 if 也会在适当的时候编译成三元组,就像没有 else 子句的 if 语句一样:
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
两者都成为三元组,都可以用作表达式。它是一致的,不需要学习新的语法。所以,感谢您的建议,但我将这张票关闭为“wontfix”。
请参考github问题:https ://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
如果它主要是真正的用途,您也可以将它写在两个语句中:
a = 5
a = 10 if false
如果您需要更多可能性,或者使用 switch 语句:
a = switch x
when true then 5
when false then 10
使用布尔值可能会过大,但我发现它非常易读。
多行版本(例如,如果您需要在每行之后添加注释):
a = if b # a depends on b
then 5 # b is true
else 10 # b is false
CoffeeScript
没有三元运算符。这就是文档所说的。
您仍然可以使用类似的语法
a = true then 5 else 10
就清楚多了。
类似于 quoteBro 的answer,但没有then
关键字。这是一个使用普通的多行 if 语句的版本。对我来说,这个格式很好。
考虑这个正常的 if 语句
if true
# do stuff
else
# do stuff
然后将其用于赋值(同样,没有then
关键字)
value = if true
5
else
10
value = if false
5
else
10
这编译为 javascript 就像一个普通的三元
value = true ? 5 : 10;
value = false ? 5 : 10;