[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Making Array#uniq work

Kroeger, Simon (ext)

1/24/2006 12:02:00 PM

> -----Original Message-----
> From: Damphyr [mailto:damphyr@freemail.gr]
> Sent: Tuesday, January 24, 2006 12:35 PM
> To: ruby-talk ML
> Subject: Making Array#uniq work
>
> OK, according to the Pickaxe 2nd. Edition, Array#uniq judges
> uniqueness
> based on eql?. Somehow this doesn't seem to work for me :).
> Following code returns the Array with two members instead of
> the one I
> would wish for. Any pointers? I'm running 1.8.2


Hi,

you have to define a 'hash' method because Array uses a Hash to remove
the duplicates.

e.g.:
----------------------------------------------------------
class A
attr_accessor :a,:b
def initialize a
@a=a
@b=Array.new
end
def << item
@b<<item
end

def eql? other
return true if @a==other.a && @b==other.b
end

def == other
return eql?(other)
end

def hash
a.hash * b.hash
end
end


o1=A.new("a")
o2=A.new("a")
o1<<"o"
o2<<"o"
puts o1==o2
puts o1.eql?(o2)
p [o1,o2].uniq
----------------------------------------------------------

cheers

Simon