【问题标题】:Coffeescript -how to dry up these two statementsCoffeescript - 如何干掉这两个语句
【发布时间】:2012-06-16 04:03:56
【问题描述】:

我有

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"]

但它们都给出语法错误。

【问题讨论】:

    标签: javascript coffeescript dry


    【解决方案1】:

    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

    【讨论】:

    • 哇...我对the resulting JavaScriptsomething in <array literal> 案例感到非常(积极)惊讶=D
    • @epidemian 对吧?我认为咖啡脚本编译器生成高效 javascript 代码的第二优先事项是生成人类可读的 javascript 代码。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      为什么不能使用最基本的东西:if...else 声明。

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

      【讨论】:

        【解决方案4】:

        如果我使用您的第一个变体,我认为这会起作用:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多