咖啡脚本切换不间断

时间:2012-05-08 15:55:06

标签: 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:
        ...                              ...

我认为这会奏效但失败了:

switch code
    when 37 then continue
    when 38 then continue  ->    not valid
    when 39 then continue
    when 40
        ...

4 个答案:

答案 0 :(得分:48)

不是真的。来自the docs

  

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

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

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

答案 1 :(得分:12)

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

name = 'Jill'

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

Check it out in action here.

答案 2 :(得分:4)

这是完全可能的,只需使用经典的javascript并通过反引号传递

`
switch (code) {
    case 37:
    case 38:
    case 39:
    case 40:
        // do the work of all four
    default:
        //default
}
`

答案 3 :(得分:2)

旧问题已经存在,但是如果你将逗号放在下一行,它会按预期工作,而不会显示@Ron Martinez的反斜杠行延续

switch code
  when 37
     , 38
     , 39
     , 40
    console.log "Some Number"
  else
    console.log "Default"

将编译为:

switch (code) {
  case 37:
  case 38:
  case 39:
  case 40:
    return console.log("Some Number");
  default:
    return console.log("Default");
}