0
您好我想初始化通過一些配置文件dinamically紅寶石對象的實例的屬性,我可以做到這一點非常快使用下面的代碼:attr_accessor和元編程紅寶石
class ApiTester
def initialize(path= "api_test")
h = eval(File.open("#{path}/config.hash","r").read)
h.each do |k,v|
eval("@#{k}=#{v.class == String ? "\"#{v}\"" : v }")
end
end
end
怎麼辦我給屬性「@#{k}」屬性attr_accessor?
你知道'attr_accessor'是做什麼的,對吧?所以你可以用那個實例變量以類似的方式定義這些方法。 –
您應該在實例的* singleton類*上定義getter和setter。否則,你會污染你的ApiTester類,因此會污染你的每個實例。另一種選擇是基於配置動態地生成一個完整的類。 – Stefan