Coffeescript - 如何干掉这两个陈述

时间:2012-06-15 17:58:58

标签: javascript coffeescript dry

我有

alert 'yesb' if "blow" in ["slow", "flow", "blow"] 
alert 'nob' if "blow" not in ["slow", "flow", "blow"]

我宁愿拥有

alert 'yesb' if "blow" in ["slow", "flow", "blow"] else alert "nob"

alert 'yesb' if "blow" in ["slow", "flow", "blow"] else "nob"

alert 'yesx' else alert 'nob' if "xrow" not in ["slow", "flow", "grow"]

alert 'yesx' else 'nob' if "xrow" not in ["slow", "flow", "grow"]

但它们都会出现语法错误。

4 个答案:

答案 0 :(得分:3)

CoffeeScript的三元if-then语法为if a > b then c else d

所以你要找的是......

alert(if "blow" in ["slow", "flow", "blow"] then 'yesb' else 'nob')

来自Python我也遇到了这个问题,因为Python的语法是c if a > b else d

答案 1 :(得分:1)

if是coffee-script中的一个表达式,这意味着您可以像JavaScript(或其他类似c语言)中的三元运算符<condition> ? <if_true> : <else>一样使用它。它将返回最后一个值。所以你可以使用这样的东西:

alert if yourVar in ['slow', 'blow', 'grow'] then 'yes' else 'no'

答案 2 :(得分:1)

为什么你不能使用最基本的东西:if...else陈述。

if "blow" in ["slow", "flow", "blow"]
  alert "yesb"
else
  alert "nob"

答案 3 :(得分:0)

如果我使用了您的第一个版本,我认为这样可行:

if "blow" in ["slow", "flow", "blow"] alert 'yesb' else alert "nob"
相关问题