我來到Ruby的Ruby。 我怎麼能做紅寶石的下一件事?如果你有一個類,例如像字符串Ruby中的反射。通過給定的類名實例化一個對象
array_object = "Array".constantize.new
我來到Ruby的Ruby。 我怎麼能做紅寶石的下一件事?如果你有一個類,例如像字符串Ruby中的反射。通過給定的類名實例化一個對象
array_object = "Array".constantize.new
你可以這樣做:
arrayObject = Object::const_get('Array').new
您也可以使用下面的,如果你正在使用Ruby on Rails :
a = String
a.new("Geo")
會給你一個字符串。同樣的事情適用於其他類(參數編號&當然會有所不同)。
看起來像來自RoR的解決方案。謝謝! – vooD 2010-03-31 20:30:01
值得指出的是'constantize'是Rails的ActiveSupport模塊添加到Ruby的核心擴展,即它不是純粹的Ruby。 – 2010-03-31 20:30:18
好點約翰,我已經更新了我的答案。 – 2010-03-31 20:40:11
:
$className = 'ArrayObject';
$arrayObject = new $className();
儘管這並不直接回答這個問題,但由於類是對象,因此可以像存儲其他對象一樣存儲它們,這在很多情況下可能是更好的方法,因爲在這種情況下,您會試圖使用字符串用另一種語言。 – Chuck 2010-03-31 20:45:48
酷!非常感謝! – vooD 2010-03-31 20:27:37