CoffeeScript中的三元操作
我需要设定一个值,取决于一个条件。
用CoffeeScript做这个最简单的方法是什么?
例如,这是我如何在JavaScript中做到这一点:
a = true ? 5 : 10 # => a = 5 a = false ? 5 : 10 # => a = 10
由于一切都是一个expression式,因此产生一个值,你可以使用if/else
。
a = if true then 5 else 10 a = if false then 5 else 10
你可以在这里看到更多关于expression式的例子
a = if true then 5 else 10 a = if false then 5 else 10
见文件 。
几乎所有的语言都应该这样做:
a = true && 5 || 10 a = false && 5 || 10
Coffeescript 不支持 JavaScript三元运算符。 这是从咖啡作者的原因:
我喜欢三元运算符,就像下一个人一样多(实际上可能多一点),但是语法并不是什么使得它们好 – 它们是好的,因为它们可以作为一个ifexpression。
他们的语法只是另一个难以理解的神奇魔法,与语言中的其他任何东西都不相似。 结果是平等的,我宁愿有
if/elses
总是看起来相同(总是编译成expression式)。因此,在CoffeeScript中,即使是多行ifs也会在适当的时候编译成三元组,就像if语句没有else子句一样:
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
两者都成为三元,都可以作为expression。 这是一致的,没有新的语法学习。 所以,谢谢你的build议,但是我把这张票closures为“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