Что означает оператор?=?
У меня есть hamlc (известный как Haml + Inline CoffeeScript), который имеет такую строку
- @variable1 ?= @object1.element[0]
Интересно, означает ли это: если @object1.element[0]
имеет значение, а затем сохранить его внутри @variable1
,
Я не могу найти информацию о hamlc. Кроме того, если то, что я понимаю, правильно, что, если я хочу добавить else
состояние?
1 ответ
?=
Оператор известен как экзистенциальный оператор в CoffeeScript.
Из документов:
Немного сложно проверить наличие переменной в JavaScript. if (переменная) ... подходит близко, но не для нуля, пустой строки и false. Экзистенциальный оператор CoffeeScript? возвращает true, если переменная не равна нулю или не определена, что делает ее аналогом Ruby nil?
Это означает, что на вашем примере это работает так:
@variable1 ?= @object1.element[0]
Если @variable1
является null
или же undefined
назначить @object1.element[0]
к этому.
Что делать, если я хочу добавить условие для "еще"?
@variable1 =
if @variable1?
@object1.element[0]
else
# your else clause here