Coffeescript中的条件运算符

Coffeescript中的条件运算符,coffeescript,conditional-operator,Coffeescript,Conditional Operator,我真的很喜欢这个: var value = maxValue > minValue ? minValue : maxValue; value = if maxValue > minValue then minValue else maxValue Coffescript中是否有同样简洁的内容?您可以这样写: var value = maxValue > minValue ? minValue : maxValue; value = if maxValue > min

我真的很喜欢这个:

var value = maxValue > minValue ? minValue : maxValue;
value = if maxValue > minValue then minValue else maxValue

Coffescript中是否有同样简洁的内容?

您可以这样写:

var value = maxValue > minValue ? minValue : maxValue;
value = if maxValue > minValue then minValue else maxValue
value = if maxValue > minValue then minValue else maxValue

它将像您的代码一样编译。

在这种情况下,感觉CoffeeScript有着相互竞争的理念:

  • 言简意赅
  • 不要多余
  • 由于所有操作都会返回一个结果,因此if/then/else方法可以满足您的需要。添加?/:运算符是多余的

    这就是我希望他们给我们的?/:三元运算符的地方,尽管它是多余的。。。它只是比if/then/else变量读得更好

    就我的2c。

    以下是事实: 在文档中,有一个标题为“条件、三元组和条件赋值”的部分。这让人相信coffeescript支持

    condition ? when-true : when-false 
    
    但事实并非如此

    下面是有关解决此问题的修补程序的信息 这是补丁(它被推到):

    示例: javascript和coffeescript中都有一个更简洁的选项:)


    这实际上是不正确的,请查看评论。

    正如Răzvan Panda指出的,我的评论实际上可能是更好的答案之一:

    value = `maxValue > minValue ? minValue : maxValue`
    


    没有办法让
    a?b:c
    CoffeeScript中的三元,没有歧义,因为
    a?b
    有一个含义(
    a
    如果它非空,
    b
    否则),而
    b:c
    也有一个含义(
    {b:c}
    ).
    if-then-else
    是一个三元操作,它只是有不同的语法。在coffee脚本中,if-else语句写在一行语句中。我的意思是三元操作被定义为一个包含三个元素的操作。一行的
    if-then-else
    语句被分类为三元。“三元”的正确术语“javascript中的运算符无论如何都是条件运算符。在coffee中,
    value=Math.min minValue,maxValue
    ;)我不认为这个问题是指实际内容,而是指在一行上完成所有内容的能力。可能是错的,因为它没有解决问题。OP询问Coffeescript中的
    条件运算符以及如何将其写入,给出了
    JS
    示例。这只是一个示例,与实际的语法问题无关。非常感谢您没有将其称为“三元运算符”。@MarkWilden他为什么不应该呢?这是一个公认的术语,如果你为coffescript寻找三元运算符,你会马上找到它。@MarkWilden:你得到了5张赞成票,所以似乎有很多人同意你的观点,但请你解释一下原因好吗?“‘三元运算符’的问题在于它描述的是它的外观,而不是它的功能。”——埃里克·利珀特(在评论中)您也可以这样做:
    value=`maxValue>minValue?minValue:maxValue`
    @PeterKrnjevic:您可能想将您的注释更改为答案:)在相同的字符数下,但在我看来可读性较低,这也是可行的:如果您认为正确的解决方案是:
    value=Math.min minValue,maxValue
    好的,现在如何在多行上编写?除了使用换行符“`”之外,还有其他方法吗?这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。@Plasmah:这实际上是一个有效的答案,只是可读性稍差。@RăzvanPanda不,这不是一个有效的答案,因为它所做的事情与要求的稍有不同,答案中没有描述/记录差异。例如,如果
    minValue
    等于
    0
    maxValue
    等于
    5
    ,那么
    maxValue>minValue?minValue:maxValue
    将返回
    0
    ,而
    maxValue>minValue&&minValue | | | maxValue
    将返回
    5
    @pepkin88:这是正确的,当为minValue传递falsy值且条件为true时,此答案不起作用。代码行中引号的作用是什么?反勾号导致在赋值之前执行该行。
    value = `maxValue > minValue ? minValue : maxValue`