Cuando llamo Array#-
que no parece llamar a cualquier método de comparación en las cuerdas estoy comparando:¿Cómo combina Array # - (operador de resta) elementos para la igualdad?
class String
def <=>(v)
puts "#{self} <=> #{v}"
super(v)
end
def ==(v)
puts "#{self} == #{v}"
super(v)
end
def =~(v)
puts "#{self} =~ #{v}"
super(v)
end
def ===(v)
puts "#{self} == #{v}"
super(v)
end
def eql?(v)
puts "#{self}.eql? #{v}"
super(v)
end
def equal?(v)
puts "#{self}.equal? #{v}"
super(v)
end
def hash()
puts "#{self}.hash"
super
end
end
p %w{one two three} - %w{two}
simplemente devuelve:
["one", "three"]
Entonces, ¿qué está haciendo Array#-
?
Además, estoy usando Ruby 1.9.2p290. En 1.8.7 parece causar un bucle infinito.
Intenta invocarlo con 'irb' (!). Después de leer la definición de su clase, entra en un ciclo infinito. –
@JoshLee ¿Qué quieres decir con que entra en un ciclo infinito? Cuando ejecuto el guión que salga sin ningún problema – Zequez
Se imprime N == N N == == m m m N == == n m n M == == l n n una y otra vez ... –