0
任何人都可以說我,爲什麼不工作:instance_eval不適用於att_accessor?
class A
attr_accessor :b
end
a = A.new
a.instance_eval do
b = 2
end
a.b
=> nil
什麼是錯的我在幹什麼?
任何人都可以說我,爲什麼不工作:instance_eval不適用於att_accessor?
class A
attr_accessor :b
end
a = A.new
a.instance_eval do
b = 2
end
a.b
=> nil
什麼是錯的我在幹什麼?
罪魁禍首在於這部分代碼:
a.instance_eval do
b = 2
end
雖然b = 2
在您的實例的環境中計算,它不叫二傳手。相反,它只是在當前範圍內創建一個名爲b
的新本地變量。要打電話給二傳手,您必須進一步澄清您的代碼以解決歧義:
a.instance_eval do
self.b = 2
end
變化:
a.instance_eval do
self.b = 2
end