我已經在Ruby中寫了一個類,稱之爲富。現在我想創建它的一些實例。但是,我想使用存儲在變量中的值作爲實例的名稱。我可以使用指定名稱創建類的實例嗎?
例如,可變杆的值是「ABC」。現在我想將新實例「ABC」的名稱作爲語句ABC = Foo.new
我可以認識到這一點嗎?如果可能的話,請告訴我如何。謝謝!!!
我已經在Ruby中寫了一個類,稱之爲富。現在我想創建它的一些實例。但是,我想使用存儲在變量中的值作爲實例的名稱。我可以使用指定名稱創建類的實例嗎?
例如,可變杆的值是「ABC」。現在我想將新實例「ABC」的名稱作爲語句ABC = Foo.new
我可以認識到這一點嗎?如果可能的話,請告訴我如何。謝謝!!!
在Ruby中,你也應該不害怕使用eval(),只要你給它只能通過數據你,程序員構建,沒有不安全的外部影響。在這種情況下,Eval在很多語言中聲譽不佳,但在Ruby中,它非常舒適,基本上和靜態代碼一樣快。
作爲本地變量,不,但您可以使用instance_variable_set和朋友將創建的對象命名爲實例變量。
您也可以使用const_set
如果你真的與常數工作:
constant = 'ABC'
Object.const_set constant.to_sym, Foo.new
非常感謝你。它確實有很大的幫助。 – fabregaszy
我知道它的確如此。 #eval是一把錘子,你學習特別是那些之前較弱,因此更安全的方式,例如在這種情況下self.class.const_set(:ABC,self.class.const_get(:富)。新):))) –