咖啡脚本切换不间断

puc*_*chu 19 javascript coffeescript

是否有可能在没有中断的情况下使用coffeescript中的开关?

switch code                      switch (code) {
    when 37 then                     case 37: break;
    when 38 then           ->        case 38: break;
    when 39 then                     case 39: break;
    when 40                          case 40:
        ...                              ...
Run Code Online (Sandbox Code Playgroud)

我认为这会起作用但失败了:

switch code
    when 37 then continue
    when 38 then continue  ->    not valid
    when 39 then continue
    when 40
        ...
Run Code Online (Sandbox Code Playgroud)

Lin*_*iel 48

并不是的.来自文档:

JavaScript中的switch语句有点尴尬.您需要记住在每个case语句的末尾打破,以避免意外地进入默认情况.CoffeeScript可防止意外掉落,并可将开关转换为可返回的可分配表达式.格式为:switch condition,when子句,否则为默认情况.

但是,case如果要平等对待,则可以在a中指定多个值:

switch day
  when "Mon" then go work
  when "Tue" then go relax
  when "Thu" then go iceFishing
  when "Fri", "Sat"
    if day is bingoDay
      go bingo
      go dancing
  when "Sun" then go church
  else go work
Run Code Online (Sandbox Code Playgroud)

  • 我不是在评论这是好还是坏 - 你问了一个关于CoffeeScript的问题,这就是CoffeeScript的作者所想的.他并不是唯一一个认为C风格的"开关"语句不好的人.那就是说,"当""星期一","星期二","星期四","太阳"的时候有什么不好呢? (4认同)
  • 当"上班"和"放松"和"去冰钓"和"去教堂"是相同的代码:这是不好的方式 (3认同)
  • @ciastek谢谢你是对的.但我的主要观点是"休息"可能很有用. (2认同)

Ron*_*nez 12

您可以使用行继续来帮助解决此问题.例如:

name = 'Jill'

switch name
  when 'Jill', \
       'Joan', \
       'Jess', \
       'Jean'
    $('#display').text 'Hi!'
  else
    $('#display').text 'Bye!'
Run Code Online (Sandbox Code Playgroud)

在这里查看它.