如果我有两个数组a
和b
,包含的对象必须覆盖哪种方法,这样减法-
才能正常工作?需要什么方法让“ - ”(减法)方法与Ruby数组一起工作?
与eql?
编辑
我添加更多的细节,我的问题是否足够。
我有这个类中定义:
class Instance
attr_reader :id, :desc
def initialize(id , desc )
@id = id.strip
@desc = desc.strip
end
def sameId?(other)
@id == other.id
end
def eql?(other)
sameId?(other) and @desc == other.desc
end
def to_s()
"#{id}:#{desc}"
end
end
好吗?
然后我从不同部分填充了我的两个数组,然后我想获得差异。
a = Instance.new("1","asdasdad")
b = Instance.new("1","a")
c = Instance.new("1","a")
p a.eql?(b) #false
p b.eql?(c) #true
x = [a,b]
y = [c]
z = x - y # should leave a because b and c "represent" the same object
但是这是行不通的,因为a
和b
被关押在数组中。我想知道我需要在我的课程中重写什么方法才能正常工作。
你能定义“正常工作”吗?现在,从array1中减去array2,可以删除array2中存在的任何项目。我想这似乎是预期的效果。 – 2009-12-02 03:31:54
@dcneiner:对于每一个对象? ...我正在定义...让我把这个问题 – OscarRyz 2009-12-02 03:34:39