У меня есть класс, который я хочу сравнить со строками и символами в выражении case, поэтому я подумал, что я просто переопределил метод === () для моего класса, и все будет золотым. Однако мой метод === () никогда не вызывается во время оператора case. Есть идеи?
Вот пример кода и то, что происходит в сеансе irb:
class A
def initialize(x)
@x=x #note this isn't even required for this example
end
def ===(other)
puts "in ==="
return true
end
end
irb (основной): 010: 0> a = A.new ("привет")
=> #
irb (основной): 011: 0> case a
irb (основной): 012: 1> когда "привет", то 1
irb (основной): 013: 1> еще 2
irb (основной): 014: 1> end
=> 2
(оно никогда не печатает сообщение и всегда должно возвращать true)
Обратите внимание, что в идеале я хотел бы сделать
def ===(other)
#puts "in ==="
return @x.===(other)
end
Заранее спасибо.