我需要设置值, 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三元运算符。 下面是从作者的CoffeeScript的原因:
我爱三元运营商一样多,未来的家伙(可能多一点,实际上),但语法不是什么让他们好 - 他们是伟大的,因为他们能够适应一个if / else语句在同一行作为表达。
它们的语法只是神秘的魔法另一位记忆,没有模拟在语言别的。 其结果是平等的,我宁可要
if/elses
总是一样的(并且总是被编译成一个表达式)。所以,在CoffeeScript中,甚至多线IFS将汇编成ternaries在适当的时候,由于意志如果在没有else子句的语句:
if sunny go_outside() else read_a_book(). if sunny then go_outside() else read_a_book()
这两者都会成为ternaries,既可以作为表达式。 这是一致的,而且也没有新的语法学习。 所以,感谢您的建议,但我关闭此票为“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
它的方式更清晰。