我有以下代碼,旨在將普通變量轉換爲實例變量。如何讓此代碼設置實例變量的值?
BasicObject.class_eval do
def instance(ins)
self.instance_variable_set("@#{ins}", ins)
end
end
比方說,用戶說
class X
foo = 3
end
bar = X.new
bar.instance(:foo)
我想什麼它做的是設置新創建的變量,@foo
3,相反,它集@foo
到:foo
。我如何使代碼做我想要的?
的代碼示例定義一個'foo'這僅僅是'class' ...'end'塊內可見。即使你回到X班,它已經消失了 - 它是詞彙範圍的一部分,而不是班級。這些「正常」變量在創建它們的範圍之外永遠不可見。一旦你點擊了關閉塊的'end',它們就只能被該塊內定義的代碼訪問。上面沒有任何這樣的代碼。 你試圖解決的實際問題是什麼? –
無論如何,你爲什麼要這個令人費解的代碼?你的目標是什麼? – Phrogz