Учитывая, что у меня есть массив arr
экземпляров пользовательского класса My_class
. Этот класс имеет несколько различных переменных экземпляра. Давайте назовем их :name
(строка), :is_processed
(логическое значение) и :date
( DateTime ). Все они читабельны.
Как лучше всего проверить, находится ли другой заданный экземпляр My_class
(назовите его newbe
) в массиве на основе содержимого вышеупомянутых переменных экземпляра?
Использование arr.include?(newbe)
не сработает, поскольку при этом сравниваются идентификаторы объектов, не так ли?
Могу ли я переопределить способ Array#include?
сравнения двух объектов?
Говоря в коде
class My_class
attr_reader :name, :is_processed, :date
def initialize(_name, _proc, _d)
@name = _name
@is_processed = _proc
@date = _d
end
end
где-то еще
first = My_class.new("First", false, DateTime.new(2001,2,3,4,5,6))
second = My_class.new("Second", true, DateTime.new(2001,2,3,4,5,6))
third = My_class.new("Third", false, DateTime.new(2001,2,3,3,2,1))
newbe = My_class.new("Second", true, DateTime.new(2001,2,3,4,5,6))
arr = [first, second, third]
arr.include?(newbe) # => false but should be true