Что означает оператор?=?

У меня есть 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
Другие вопросы по тегам