19

是否可以不间断地在咖啡脚本中使用开关?

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

4 回答 4

48

并不真地。从文档

JavaScript 中的 switch 语句有点尴尬。您需要记住在每个 case 语句的末尾都中断,以避免意外陷入默认情况。CoffeeScript 可以防止意外掉线,并且可以将开关转换为可返回、可赋值的表达式。格式为:switch 条件,when 子句,else 为默认情况。

但是,您可以做的是在 a 中指定几个值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
于 2012-05-08T16:17:30.997 回答
12

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

name = 'Jill'

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

在这里查看实际情况。

于 2013-10-26T18:54:27.173 回答
4

完全有可能,只需使用经典的 javascript 并通过 backtics 传递

`
switch (code) {
    case 37:
    case 38:
    case 39:
    case 40:
        // do the work of all four
    default:
        //default
}
`
于 2013-03-26T06:17:34.633 回答
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");
}
于 2016-03-02T09:33:51.323 回答