在CoffeeScript中三元操作(Ternary operation in CoffeeScri

2019-06-23 15:21发布

我需要设置值, a是取决于一个条件。

什么是CoffeeScript中做到这一点的最简单的办法?

例如,这是我怎么会做它在JavaScript:

a = true  ? 5 : 10  # => a = 5
a = false ? 5 : 10  # => a = 10

Answer 1:

既然一切都是表达式,并由此产生了价值,你可以用if/else

a = if true then 5 else 10
a = if false then 5 else 10

你可以看到更多的表达的例子在这里 。



Answer 2:

a = if true then 5 else 10
a = if false then 5 else 10 

见文档 。



Answer 3:

在几乎任何语言这应该工作,而不是:

a = true  && 5 || 10
a = false && 5 || 10


Answer 4:

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



Answer 5:

你也可以把它写在两个语句,如果它大多是真实的使用:

a = 5
a = 10 if false

或使用switch语句,如果你需要更多的可能性:

a = switch x
  when true then 5
  when false then 10

用布尔可能过大,但我觉得很可读。



Answer 6:

多行版本(例如,如果你需要在每行后添加评论):

a = if b # a depends on b
then 5   # b is true 
else 10  # b is false


Answer 7:

CoffeeScript没有三元运算符。 这就是文档说什么。

您仍然可以使用像语法

a = true then 5 else 10

它的方式更清晰。



文章来源: Ternary operation in CoffeeScript