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有着相互竞争的理念:
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`