2
我想設置一些Ruby代碼,以便我可以動態地定義一個新的類。我現在的代碼如下所示,我認爲它會工作,但它不工作,我有點困惑爲什麼不。Ruby元編程 - 通過proc動態定義一個新類。
def define_new_class(&block)
new_class = Class.new(MyClass) do
yield
end
end
define_new_class do
attr_accessor :my_accessor_1
def initialize
puts "Hello"
end
end
任何有識之士將不勝感激!
我只是使用MyClass作爲佔位符 - 它是在別處定義的。我在代碼的不同部分設置常量。我會試一試你的'instance_eval'解決方案! – Bryce
亞歷克斯,我想知道哪裏可以使用'模塊#const_set'。這在這方面很有幫助。一件小事:我認爲你不需要用'self.'來引用'instance_eval'。我注意到'self.'通常被添加到不需要的地方。這在某種程度上是文體偏好嗎? –
對我來說,絕對是一種文體選擇。只是想讓它在評估區塊的情況下變得非常清楚。我聽說過你應該主要將'自我'限制在屬性設置者身上,但我傾向於更頻繁地拋棄它。 –