我需要将值设置为a
,这取决于条件。
使用CoffeeScript执行此操作的最短方法是什么?
E.g。这是我在JavaScript中的方式:
a = true ? 5 : 10 # => a = 5
a = false ? 5 : 10 # => a = 10
答案 0 :(得分:526)
由于所有内容都是表达式,因而产生了值,因此您只需使用if/else
。
a = if true then 5 else 10
a = if false then 5 else 10
您可以详细了解表达式示例here。
答案 1 :(得分:67)
a = if true then 5 else 10
a = if false then 5 else 10
请参阅documentation。
答案 2 :(得分:21)
几乎任何语言都可以这样做:
a = true && 5 || 10
a = false && 5 || 10
答案 3 :(得分:11)
Coffeescript 不支持 javascript三元运营商。 以下是 coffeescript author 的原因:
我喜欢三元运算符,就像下一个人一样(可能有点像 更多,实际上),但语法并不是什么使他们好 - 他们是 很棒,因为他们可以在一行中使用if / else作为 表达
他们的语法只是记忆的另一点神秘魔法 与语言中的任何其他内容都不相似。结果是平等的, 我宁愿让
if/elses
总是看起来一样(而且永远都是 编译成表达式)。因此,在CoffeeScript中,即使是多行ifs也会编译成三元组 在适当的时候,if if语句没有else子句:
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
答案 4 :(得分:3)
如果主要是真的使用,你也可以用两个语句写出来:
a = 5
a = 10 if false
如果您需要更多可能性,请使用switch语句:
a = switch x
when true then 5
when false then 10
使用布尔值可能超大但我发现它非常易读。
答案 5 :(得分:1)
多行版本(例如,如果您需要在每行后添加评论):
a = if b # a depends on b
then 5 # b is true
else 10 # b is false
答案 6 :(得分:0)
CoffeeScript
没有三元运算符。那就是文档所说的。
您仍然可以使用类似的语法
a = true then 5 else 10
要清晰得多。