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

Кофейный эквивалент выражения python 'pass'

В Python можно использовать оператор 'pass', чтобы ничего не делать:

if true:
    pass

Есть ли аналогичное утверждение в coffeescript? Я пытаюсь сделать оператор switch и ничего не делать, если выполняются определенные условия.

switch variable:
  when 5 then pass
  else do variable
4b9b3361

Ответ 1

В отличие от Python, пустые блоки (обычно) действительны в CoffeeScript. Поэтому вы можете просто использовать:

switch variable:
  when 5 then
  else
    variable

Обратите внимание, что без then он не будет компилироваться, что я считаю немного нечетным. Это работает в целом, хотя:

if x
else if y
  something()
else
  somethingElse()

отлично работает CoffeeScript.

Ответ 2

Я счастливый пользователь

switch x
  when 1
   null
  when 2
   y = 3
  else
   y = 4

так как null уже находится в языке и семантически переносит это значение "ничего".

Ответ 3

Поскольку каждое выражение имеет значение в CoffeeScript, ключевое слово pass, если оно существует, будет эквивалентно значению undefined. Таким образом, вы можете определить

pass = undefined

а затем используйте pass, как в Python:

switch variable
   when 5
     pass
   else
     do variable

Ответ 4

Я всегда использую точку с запятой для этого:

switch variable
  when 5 then ;
  else do variable

Это связано с тем, что в javascript точка с запятой является допустимым выражением, которое также ничего не делает.

Обновление. Я просто подумал о другом интересном способе этого. Вы можете определить pass как глобальную переменную и установить ее на undefined:

window.pass = undefined

switch variable
  when 5 then pass
  else do variable

Единственное, на что вам нужно обратить внимание, это использовать pass как локальную переменную или переопределить глобальную переменную pass. Это нарушит ваш код.

Если вы используете компилятор Google закрытия, вы можете аннотировать эту переменную так, чтобы она была постоянной:

`/** @const */ var pass;`

Но тогда это должно было бы идти в начале каждого файла. Однако вы можете написать свой собственный препроцессор, чтобы сделать это автоматически.

Ответ 5

Это имеет смысл для меня в coffeescript:

switch variable
    when "a" then doSomething()
    when "b" then break

Это скомпилируется для следующих js:

switch (variable) {
    case "a":
        doSomething();
        break;
    case "b":
        break;
}

Примечание. Вы не должны использовать нуль, например, @flow, потому что он вставляет ненужный оператор, подобный этому

null;