जब मैं Array#-
को कॉल करता हूं तो ऐसा लगता है कि मैं तुलना कर रहे तारों पर किसी भी तुलना विधि को कॉल नहीं करता:ऐरे # - (ऑपरेटर घटाना) समानता के तत्वों की तुलना कैसे करता है?
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}
यह सिर्फ लौटाता है:
["one", "three"]
तो, Array#-
क्या कर रहा है?
इसके अलावा, मैं रूबी 1.9.2p290 का उपयोग कर रहा हूं। 1.8.7 में यह एक अनंत लूप का कारण बनता है।
इसे 'irb' (!) के साथ आमंत्रित करने का प्रयास करें। अपनी कक्षा परिभाषा पढ़ने के बाद यह एक अनंत लूप में जाता है। –
@ जोशली क्या मतलब है कि यह एक अनंत लूप में प्रवेश करता है? जब मैं स्क्रिप्ट को निष्पादित यह किसी भी समस्या के – Zequez
यह पता प्रिंट एन == एन एन == मीटर मीटर == मीटर एन == n मीटर == n एम == n एल के बिना बाहर निकल जाता है == एन ओवर और ओवर ... –