Подтвердить что ты не робот

Кофе script переключатель без перерыва

Можно ли использовать переключатель в 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
        ...
4b9b3361

Ответ 1

Не совсем. Из документы:

Операторы Switch в JavaScript немного неудобны. Вы должны помнить, чтобы сломать в конце каждого заявления о случаях, чтобы случайно не провалиться к случаю по умолчанию. CoffeeScript предотвращает случайный провал и может преобразовать коммутатор в возвращаемое назначаемое выражение. Формат: условие switch, when clauses, иначе случай по умолчанию.

Однако вы можете указать несколько значений в 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

Ответ 2

Вы можете использовать продолжение строки, чтобы помочь в этом. Например:

name = 'Jill'

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

Проверьте здесь действие.

Ответ 3

Это вполне возможно, просто используйте классический javascript и передайте его с помощью backtics

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

Ответ 4

Старый вопрос уже, но если вы поместите запятые на следующую строку, это работает так, как ожидалось, без продолжения линии обратной косой черты, показанной @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");
}