Я пытаюсь вычислить выражение (a=10) || (rr=20)
а переменная р-р не определенИмеет ли || оператор оценивает второй аргумент, даже если первый аргумент верен?
так набрав rr
в консоли рубиновой перед вычислением предыдущего выражения возвращают
rr
NameError: undefined local variable or method `rr' for main:Object
from (irb):1
from :0
Когда я пишу выражение (a=10) || (rr=20)
возвращает 10, и когда я пишу Р.Р. потом он говорит nil
(a=10) || (rr=20)
rr # => nil
так, почему это происходит? Не следует определять rr только в том случае, если второй аргумент || оператор оценивается, который никогда не должен основываться на документации?
Существует различие между условными операциями с коротким замыканием (не оценивая второе условие, если первое ложно) и не объявляет переменную. Ваша проблема связана со второй проблемой. – DOK
Зная, когда локальная переменная находится в вашей области, сложна в Ruby. Попробуйте запустить 'a + 1, если a = 5'. Вы можете ожидать, что он установит значение 5, а затем вернет 6, но на самом деле он установит 'a' и THEN жалуется на неопределенность' a'. –