granmer
@granmer

Что значит оператор ||= в ruby?

К сожалению, на ruby-doc.org и на первых страницах google я не смог найти ответ.
Встретилось вот в таком контексте:
def permitted_params
            @permitted_params ||= declared(params, 
               include_missing: false)
end
  • Вопрос задан
  • 9238 просмотров
Решения вопроса 3
@Johnnycus
В данном случае ||= означает, что если переменной @permitted_params не присвоено значение, т.е. она равна nil или false, то нужно присвоить ей declared(params, include_missing: false), следовательно @permitted_params = declared(params, include_missing: false).
В противном случае, если у нее есть значение, ничего делать не нужно.
Ответ написан
Комментировать
@permitted_params = @permitted_params || declared(params, include_missing: false)
Ответ написан
Комментировать
@zzzzzzzzzzzzz
a ||= b не a = a || b
на самом деле это скорее a || a = b
Т.е. разница в том, что в первом случае присваивание происходит всегда, а вот во втором оно произойдет только если a есть false логически.
см www.rubyinside.com/what-rubys-double-pipe-or-equal...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы