Ответ 1
Он присваивает значение, если оно еще не назначено. Вот так:
a = nil
a ||= 1
a = 1
a ||= 2
В первом примере a будет установлено равным 1. Во втором, a все равно будет 1.
Возможный дубликат:
Что означает значение || = (или равно) в Ruby?
Трудно найти это в Google, потому что это символ, а не текст.
Что означает ||=
?
И как это работает?
Он присваивает значение, если оно еще не назначено. Вот так:
a = nil
a ||= 1
a = 1
a ||= 2
В первом примере a будет установлено равным 1. Во втором, a все равно будет 1.
Из вопроса Common Ruby Idioms:
эквивалентно
if a == nil || a == false
a = b
end
Я могу только догадываться, но я предполагаю, что он обозначает логический оператор в сочетании с установкой переменной (например, ^ =, + =, * = на других языках)
поэтому x ||= y
совпадает с x = x || y
edit: я правильно понял, см. http://phrogz.net/ProgrammingRuby/language.html#table_18.4
x = x || y
означает: используйте x, если установлено, иначе назначьте y. он может использоваться для обеспечения того, чтобы переменные были, по крайней мере, инициализированы (до 0, до пустого массива и т.д.).
Если b равно нулю, назначьте ему.
a = :foo
b ||= a
# b == :foo
Если значение b не равно nil, не изменяйте его.
a = :foo
b = :bar
b ||= a
# b == :bar
Это "сокращенное присвоение" (см. "Справочник по Ruby Pocket", стр. 10).
a = a || b
(значение a присваивается значению, образованному логическим или a, b
становится
a || = b
Почти все операторы имеют сокращенную версию (+ = * = && = и т.д.).