CoffeeScript中的三元运算

2020/10/03 07:21 · javascript ·  · 0评论

我需要根据条件设置值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三元运算符。这是来自咖啡作者的原因

我和下一个运算符一样爱三元运算符(实际上可能更多),但是语法并不是让它们变好的原因-它们很棒,因为它们可以将if / else放在一行上表达。

它们的语法只是令人难以置信的不可思议的魔力,与该语言中的其他任何事物都没有类似之处。结果相等,我宁愿if/elses看起来总是一样的(总是编译成表达式)。

因此,在CoffeeScript中,即使多行ifs也将在适当时编译为三元,而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

如果大多数情况下是真实使用,也可以用两个语句编写它:

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

要清楚得多。

本文地址:http://javascript.askforanswer.com/coffeescriptzhongdesanyuanyunsuan.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!