【问题标题】:coffeescript refactoring咖啡脚本重构
【发布时间】:2012-11-28 14:46:46
【问题描述】:

是否有任何特定于咖啡脚本的技巧可以使这看起来更整洁:

index = (->
          if segment == 'index'
            return 0
          else if segment == 'inbox'
            return 2

          1
        )()

【问题讨论】:

    标签: coffeescript


    【解决方案1】:

    是的,switch 表达式:

    index = switch segment
      when 'index' then 0
      when 'inbox' then 2
      else 1
    

    【讨论】:

      【解决方案2】:

      您可以使用\ 字符将内联if ... then ... else 语句分成多行(为了便于阅读)。

      index = if segment == 'index' then 0 \
              else if segment == 'inbox' then 2 \
              else 1
      

      如果您的条件逻辑对于简单的switch 块来说过于复杂,这将很有用。

      【讨论】:

        【解决方案3】:

        是的,CoffeeScript 特有的存在运算符:

        index = {'index': 0, 'inbox': 2}[segment] ? 1
        

        您还可以使用内联 if 语句来摆脱函数调用:

        index = if segment == 'index' then 0 else if segment == 'inbox' then 2 else 1
        

        但是在直接的 Javascript 中内联 if 不会更难:

        index = segment == 'index' ? 0 : segment == 'inbox' ? 2 : 1
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-09-03
          • 1970-01-01
          • 2013-01-09
          • 2015-01-28
          • 1970-01-01
          • 2011-11-08
          • 2011-06-30
          • 2013-06-10
          相关资源
          最近更新 更多