Если у меня есть два массива a
и b
, какой метод должен содержать объект, который должен переопределить, поэтому метод вычитания -
работает правильно?Какой метод необходим для использования метода «-» (вычитания) с массивами Ruby?
Достаточно с eql?
EDIT
я добавляю более подробно на мой вопрос.
Я этот класс определен:
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
Ok?
Затем я заполнил свои два массива из разных частей, и я хочу получить разницу.
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
хранятся в массиве. Мне интересно, какой метод мне нужно переопределить в моем классе, чтобы он работал правильно.
Можете ли вы определить, что «работает правильно»? Прямо сейчас, вычитая array2 из array1, удаляется любой элемент в массиве 1, который существует в array2. Думаю, похоже, что это желаемый эффект. –
@ dcneiner: Для каждого объекта? ... Я определяю ... позвольте мне сказать это по вопросу – OscarRyz