2015-04-27 20 views
0

此代碼的目標是在對象的item_nameqty與所比較的對象的item_nameqty相同時使其返回true。用我的代碼,這兩個放置返回false。這個Ruby代碼有什麼問題(我假設它在if/else語句中)?

class Item 
    attr_reader :item_name, :qty 

    def initialize(item_name, qty) 
     @item_name = item_name 
     @qty = qty 
    end 
    def to_s 
     "Item (#{@item_name}, #{@qty})" 
    end 
    def ==(other_item) 
     if @item_name.==(@qty) 
     true 
     else 
     false 
     end 
    end 
end 

p Item.new("abcd",1) == Item.new("abcd",1) 
p Item.new("abcd",2) == Item.new("abcd",1) 

我該怎麼辦才能修復它?我也曾嘗試使if/else語句說以下內容:

1.

if @item_name == @qty 
    true 
    else 
    false 
    end 

2.

if item_name == qty 
    true 
    else 
    false 
    end 

3.

if item_name.==(qty) 
    true 
    else 
    false 
    end 

回答

2
def ==(other_item) 
    item_name == other_item.item_name && qty == other_item.qty 
end 

你是檢查當前項目的名稱是否等於數量;這不可能是真的。 (此外,假設你正在返回布爾值,那麼if是多餘的。)