如何在Ruby中删除数组中的类实例?

如何在Ruby中删除数组中的类实例?,ruby,arrays,class,Ruby,Arrays,Class,我试图通过重写抽屉类中的“remove_item”方法来删除@contents数组中的Silverware类。此方法应采用银器@type的名称参数 class Drawer attr_reader :contents def initialize @contents = [] end def add_item(item) @contents << item end def remove_item(item = @

我试图通过重写抽屉类中的“remove_item”方法来删除@contents数组中的Silverware类。此方法应采用银器@type的名称参数

class Drawer
attr_reader :contents
    def initialize
        @contents = []
    end
    def add_item(item)
        @contents << item
    end
    def remove_item(item = @contents.pop)
        @contents.delete(item)   # I have to fix this.
    end
end

class Silverware
    attr_reader :type
        def initialize(type, clean = true)
          @type = type
        end
end

silverware_drawer = Drawer.new    # creating new drawer
silverware_drawer.add_item(Silverware.new("spoon"))    # adding silverware
p silverware_drawer.contents    # I get this >> [#<Silverware:0x007f84aa091ad8 @type="spoon",     @clean=true>]

p silverware_drawer.remove_item("spoon")    # removing spoon
p silverware_drawer.contents    # Show drawer and I still get [#<Silverware:0x007f84aa091ad8 @type="spoon",     @clean=true>]
类抽屉
属性读取器:目录
def初始化
@内容=[]
结束
def添加_项目(项目)
@内容>[#]
p银器抽屉。取下物品(“勺子”)#取下勺子
p银器_drawer.contents#展示抽屉,我仍然得到

任何帮助都将不胜感激!提前谢谢你

您没有通过该对象。你只是在传递类型。因此,您必须找到类型为“spoon”的项并将其从数组中删除

def remove_item(item)
   @contents.delete(@contents.find{|content| content.type == item})
end

@contents=@contents.reject{| content | content.type==item}
@contents.reject!{| content | content.type==item}@内容
。(回想一下,使用
reject!
,如果没有拒绝任何元素,则返回
nil
。)