Я пытаюсь научиться рубину и наткнулся на что-то странное. Этот код:Как переменная может иметь значение, а также не определять?
if defined? branch
puts "param: #{branch}\n"
else
puts "no branch! #{branch}\n"
end
Выходов «нет ветви thisisateststring! \ П», где «thisisateststring» является значением, которое было назначено переменной отраслью ранее в программе. Как может быть, что переменная branch
может иметь присвоенное ей значение, но не определено?
Edit:
Люди, кажется, не будет понимания на мой вопрос. Я не прошу вас выяснить, почему в этом конкретном случае выполняется else
; Я прошу , как это может случиться в целом. Иными словами, какой код нужно будет вставить перед этим, чтобы вызвать мое дело?
Как я уже сказал, я новичок в рубине, поэтому я мог легко ошибиться в чем-то принципиальном. Я не пытаюсь решить конкретную проблему; Я пытаюсь улучшить свое понимание, узнав больше о том, как работает рубин. В этом случае, как ruby может выводить строку, но все еще думая, что она не определена.
Дайте полный код. –
У меня нет полного кода. Этот фрагмент - это мой собственный код, который запускается как часть более крупной структуры, которую кто-то написал. Я просто пытаюсь выяснить, как переменная может быть определена и не определена в одно и то же время. – Benubird
Из того, что я могу сказать, оператор else никогда не будет успешно работать. Если, возможно, если этот код относится к определению класса или что-то подобное, то может быть, что второй ответ ветвления будет обрабатываться через функцию method_missing. – hirolau