Из того, что я понимаю, a ||= 7
означает следующее: если a
имеет значение, продолжайте использовать это значение, но если это не один, а затем установить его на 7.Рубин || = оператор, действующий забавную
Вот что происходит.
Если у меня есть a
и b
как:
a = true
b = false
затем
a ||= b
=> верно
(в моей интерпретации: так как 'а' ДЕЙСТВИТЕЛЬНО имеет значение, это остается тем, что не приравнивается к «ложному» - настолько хорошему.)
Однако, если у меня есть они перешли вверх, как:
a = false
b = true
затем a ||= b
=> верно
так что в этом случае моя логика не работает, так как она должна возвращать ложь , поскольку «поскольку« a »имеет значение, ему не следует присваивать значение« b », что, очевидно, происходит здесь.
Я что-то упустил?
Хорошее обсуждение '|| =' (и '&& =') [здесь] (http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488. HTML). Также обратите внимание, что поскольку 'a || = b' переопределит любое значение ложности (например,' nil' и 'false'), вы не хотите использовать его для переменных, которые могут иметь законные значения' false' или 'nil '. – Amadan
Подробнее. http://stackoverflow.com/questions/995593/what-does-or-equals-mean-in-ruby – mttr
Спасибо за ответ, mttr. Я ценю это. – metrazol