我想使用Eval創建一個類的實例。使用eval後訪問實例對象
這是完美的。
但我不能訪問該對象。
carreg = "bmw"
Eval(carreg+"= Car.new") < should evaluate to bmw = Car.new
這很好。完善。但是當我輸入bmw.inspect
時,沒有任何反應。有任何想法嗎 ?
編輯:
在IRB如果我做手工bmw = Car.new
,然後我就可以訪問該對象......像bmw.inspect
我想使用Eval創建一個類的實例。使用eval後訪問實例對象
這是完美的。
但我不能訪問該對象。
carreg = "bmw"
Eval(carreg+"= Car.new") < should evaluate to bmw = Car.new
這很好。完善。但是當我輸入bmw.inspect
時,沒有任何反應。有任何想法嗎 ?
編輯:
在IRB如果我做手工bmw = Car.new
,然後我就可以訪問該對象......像bmw.inspect
你需要看看補課是如何工作的。
class Car
attr_accessor :carreg
def display
puts "CarReg = #{@carreg}"
end
end
car = Car.new
car.carreg = gets.chomp
car.display
嘗試類似的東西。
謝謝你,但我想我已經得到了我想要的東西。我的類在initialize方法中有一個'@@ instances << self'。我現在已經制作了一個方法,例如'def self.instances @@ instances end',可以訪問Car類型的對象的詳細信息: 'Car.instances.each {| a |把「Car Reg:#{a.reg}」如果a.reg == regnum}' – 2014-09-10 23:59:01
現在,問題是從特定類型的對象訪問propertys等的正確方法嗎?想法是,如果用戶想要查看特定汽車的特性,他們需要提供註冊編號,然後代碼將使用它來查找對象。 (我可能會過於複雜的東西......但只是想學習) – 2014-09-11 00:03:30
問題爲什麼我不能使用你的代碼@ user2891803是什麼如果你可能有更多的一輛'汽車'。在你的例子中,可能有多個carreg,所以每當gets.chomp被調用時,它都會覆蓋該屬性。這就是爲什麼我想要汽車的多個對象 – 2014-09-11 00:08:05
爲什麼你爲此使用'eval'?你是否認爲你正試圖解決錯誤的問題? – 2014-09-10 22:31:15
Ruby新的Ruby。請耐心等待:-) 那麼就這樣吧,即時通知用戶 'puts「Reg板?」' 'carreg = gets.chomp'。 我還能如何做到這一點? – 2014-09-10 22:45:42
你不會這麼做,你只會說'car = Car.new(carreg)',讓'Car'知道它是一個BWM。 – 2014-09-10 22:56:51