Кофейный эквивалент выражения python 'pass'
В Python можно использовать оператор 'pass', чтобы ничего не делать:
if true:
pass
Есть ли аналогичное утверждение в coffeescript?
Я пытаюсь сделать оператор switch и ничего не делать, если выполняются определенные условия.
switch variable:
when 5 then pass
else do variable
Ответы
Ответ 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;