我需要将值设置为 a ,这取决于条件 .
a
使用CoffeeScript执行此操作的最短方法是什么?
例如 . 这是我在JavaScript中的方式:
a = true ? 5 : 10 # => a = 5 a = false ? 5 : 10 # => a = 10
因为一切都是表达式,因此产生一个值,所以你可以使用 if/else .
if/else
a = if true then 5 else 10 a = if false then 5 else 10
您可以看到有关表达式示例here的更多信息 .
见documentation .
在几乎任何语言中,这应该起作用:
a = true && 5 || 10 a = false && 5 || 10
Coffeescript doesn't support javascript三元运算符 . 这是 coffeescript author 的原因:
我喜欢三元运算符和下一个运算符(实际上可能更多一点),但语法并不能使它们变得更好 - 它们非常棒,因为它们可以在一行上匹配if / else一种表达 . 他们的语法只是记忆中另一种神秘的魔法,与语言中的任何其他东西都不相似 . 结果是平等的,我宁愿将if / elses看起来总是一样(并且总是被编译成表达式) . 因此,在CoffeeScript中,即使是多行ifs也会在适当时编译为三元组,if if语句也会在没有else子句的情况下编译:if sunny出去()其他读一本书() .
如果晴天则go_outside()否则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 没有三元运算符 . 这就是文档所说的 .
CoffeeScript
您仍然可以使用类似的语法
a = true then 5 else 10
它更加清晰 .
7 回答
因为一切都是表达式,因此产生一个值,所以你可以使用
if/else
.您可以看到有关表达式示例here的更多信息 .
见documentation .
在几乎任何语言中,这应该起作用:
Coffeescript doesn't support javascript三元运算符 . 这是 coffeescript author 的原因:
如果晴天则go_outside()否则read_a_book()
两者都成为三元,都可以用作表达 . 它是一致的,没有新的语法可供学习 . 所以,谢谢你的建议,但我正在关闭这张票作为“wontfix” .
请参考github问题:https://github.com/jashkenas/coffeescript/issues/11#issuecomment-97802
如果主要是真的使用,你也可以用两个语句写它:
如果您需要更多可能性,请使用switch语句:
使用布尔值可能超大但我发现它非常易读 .
多行版本(例如,如果您需要在每行后添加评论):
CoffeeScript
没有三元运算符 . 这就是文档所说的 .您仍然可以使用类似的语法
它更加清晰 .