Подтвердить что ты не робот

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

Возможный дубликат:
Что означает значение || = (или равно) в Ruby?

Трудно найти это в Google, потому что это символ, а не текст.

Что означает ||=?

И как это работает?

4b9b3361

Ответ 1

Он присваивает значение, если оно еще не назначено. Вот так:

a = nil
a ||= 1

a = 1
a ||= 2

В первом примере a будет установлено равным 1. Во втором, a все равно будет 1.

Ответ 2

Из вопроса Common Ruby Idioms:

эквивалентно

 if a == nil || a == false   
    a = b 
 end

Ответ 3

Я могу только догадываться, но я предполагаю, что он обозначает логический оператор в сочетании с установкой переменной (например, ^ =, + =, * = на других языках)

поэтому x ||= y совпадает с x = x || y

edit: я правильно понял, см. http://phrogz.net/ProgrammingRuby/language.html#table_18.4

x = x || y означает: используйте x, если установлено, иначе назначьте y. он может использоваться для обеспечения того, чтобы переменные были, по крайней мере, инициализированы (до 0, до пустого массива и т.д.).

Ответ 4

Если b равно нулю, назначьте ему.

a = :foo
b ||= a
# b == :foo

Если значение b не равно nil, не изменяйте его.

a = :foo
b = :bar
b ||= a
# b == :bar

Ответ 5

Это "сокращенное присвоение" (см. "Справочник по Ruby Pocket", стр. 10).

a = a || b

(значение a присваивается значению, образованному логическим или a, b

становится

a || = b

Почти все операторы имеют сокращенную версию (+ = * = && = и т.д.).