我正在學習ruby。我正試圖理解封閉方式的工作方式,以及它們與功能的區別。 我完全知道應該通過proc或lambda來實現閉包。瞭解Ruby嵌套函數
我想深入瞭解紅寶石。這樣我檢查各種非傳統的代碼。我想了解爲什麼第3行工作,而第5行是一個錯誤。
x=123
def b(x)
p x
def a(u)
p x # why is this an error?!?!?
end
a 4
end
b 1
- 如果不能訪問B的參數,爲什麼沒有訪問全局x = 123?
- 爲什麼這個工作,如果我明確地使用變化線1 & 5全球「$ x」?
- 爲什麼這個工作,如果我明確使用lambda?
這純粹是一個學習練習,我這樣做是爲了理解發動機罩下面發生了什麼。
出於好奇,如果b是屬於某個類的方法,會發生什麼?一個也屬於那個班? – eshalev
@eshalev:是的。 (但'a'只會在'b'第一次運行後定義(需要運行'def'語句來定義方法)) – newacct