我在學習ruby,遇到了一些奇怪的東西。此代碼:變量如何具有一個值,也沒有定義?
if defined? branch
puts "param: #{branch}\n"
else
puts "no branch! #{branch}\n"
end
輸出「無分支thisisateststring \ n!」,其中「thisisateststring」是已被分配給變量分支早在程序中的價值。怎麼可能變量branch
可以賦值給它,但是沒有定義?
編輯:
人們似乎不理解我的問題。我不是要你弄清楚爲什麼在這個特定的例子中,else
正在執行;我問的是這怎麼可能發生在一般。換句話說,在此之前需要插入哪些代碼才能導致我的情況發生?如我所說,我是ruby的新手,所以我很容易誤解一些基本的東西。我不是想解決一個具體的問題,我試圖通過更多地瞭解ruby如何工作來提高我的理解。在這種情況下,ruby如何輸出一個字符串,但仍然認爲它沒有被定義。
給出完整的代碼。 –
我沒有完整的代碼。這段代碼是我自己的代碼,它正在作爲別人寫的更大框架的一部分運行。我只是試圖找出如何定義一個變量,而不是同時定義。 – Benubird
從我可以告訴else語句永遠不會成功運行。除非這個代碼是來自類定義或類似的東西,否則可能是第二個分支調用將通過method_missing函數來處理。 – hirolau