2015-06-03 55 views
-3
class Item 
    def initialize(hash) 
     @my_hash=hash 
     return @my_hash 
    end 
end 
natraj=Item.new({name: "pencil", quantity: 500}) 
+1

'initialize'將永遠返回對象本身,不管是什麼。所以在這種情況下,natraj是一個'Item'。您可以將'attr_reader:my_hash'或'attr_accessor:my_hash'添加到該類,然後使用'natraj.my_hash'進行訪問。 'attr_reader'將創建一個getter方法,其中'attr_accessor'將生成getter和setter方法。 – engineersmnky

+0

謝謝。有用。直接打印natraj,我們得到Item 0x251f820。 什麼是物品代碼? –

+0

我認爲這是所討論對象的內存指針,儘管它沒有什麼意義,因爲它是實現和解釋器特定的。 – engineersmnky

回答

0

通常這類問題走近紅寶石這樣的代碼:

class Item 
    attr_reader :name 
    attr_reader :quantity 

    def initialize(options) 
    @name = options[:name] 
    @quantity = options[:quantity].to_i 
    end 

    def to_h 
    { 
     name: @name, 
     quantity: @quantity 
    } 
    end 
end 

natraj = Item.new(name: "pencil", quantity: 500) 

natraj.name 
# => "pencil" 
natraj.quantity 
# => 500 

natraj.to_h 
# => {:name=>"pencil", :quantity=>500} 

正如在評論中指出,在initialize方法return值是一個特例,被忽略。

相關問題