[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

array.equal?

Nick Bhanji

11/7/2008 2:18:00 PM

Hello All,

I am not sure where to ask this, but someone after reading this can tell
me more.

I am trying to right a functions where I am comparing 2 arrays. Here is
an example.

a = [1,1]
b = [1,1]

in the irb, I executed a.equal? b and the result came as false.

here is the output:
irb(main):031:0> a =[1,1]
=> [1, 1]
irb(main):032:0> b =[1,1]
=> [1, 1]
irb(main):033:0> a.equal? b
=> false
irb(main):034:0>

however when I execute a.eql? b the result is true.

My questions:
1. why is equal? listed in the methods for the array
2. what is the definition of equal? in the case of array?
3. why is there another function eql? performing the actual equal test

I am using ruby version 1.8.6 for the windows

Thank you in advance.

Nick.B
--
Posted via http://www.ruby-....

13 Answers

Robert Klemme

11/7/2008 2:26:00 PM

0

2008/11/7 Nick Bhanji <nickbh@weassemble4u.ca>:
> My questions:
> 1. why is equal? listed in the methods for the array
> 2. what is the definition of equal? in the case of array?
> 3. why is there another function eql? performing the actual equal test

My questions:

1. What conclusions did you draw from your test results?
2. What did the documentation say?

robert

--
remember.guy do |as, often| as.you_can - without end

Sebastian Hungerecker

11/7/2008 2:39:00 PM

0

Nick Bhanji wrote:
> My questions:
> 1. why is equal? listed in the methods for the array
> 2. what is the definition of equal? in the case of array?
> 3. why is there another function eql? performing the actual equal test

1. Where exactly is it listed? It's not listed in the docs for Array.
equal? is defined by Object and it is not overridden for any core class.
2. The same as for anything else: a.equal? b is true if and only if a and b
are actually the same object (i.e. both a and b point to the same location in
memory)
3. eql? does not perform the "actual equal test" - whatever that is. eql? is
to be used together with hash (and is indeed used that way by Hash, Set and
Array#&, Array#| and Array#-).
4. The method that I assume you're looking for is ==

HTH,
Sebastian
--
Jabber: sepp2k@jabber.org
ICQ: 205544826

Nick Bhanji

11/7/2008 2:54:00 PM

0

Robert Klemme wrote:
> 2008/11/7 Nick Bhanji <nickbh@weassemble4u.ca>:
>> My questions:
>> 1. why is equal? listed in the methods for the array
>> 2. what is the definition of equal? in the case of array?
>> 3. why is there another function eql? performing the actual equal test
>
> My questions:
>
> 1. What conclusions did you draw from your test results?
> 2. What did the documentation say?
>
> robert

Since I went through the documentation for the Array. equal? method
does not exist. eql? does exist. Prior to this -- I used [1,1].methods
and it listed the methods that are available for the object. Now my
conclusion is that no to trust methods function -- because it does not
do what it is supposed to do -- that is allow a programmer to know what
methods are supported.
--
Posted via http://www.ruby-....

Lloyd Linklater

11/7/2008 3:00:00 PM

0

Robert Klemme wrote:
> 2008/11/7 Nick Bhanji <nickbh@weassemble4u.ca>:
>> My questions:
>> 1. why is equal? listed in the methods for the array
>> 2. what is the definition of equal? in the case of array?
>> 3. why is there another function eql? performing the actual equal test
>
> My questions:
>
> 1. What conclusions did you draw from your test results?
> 2. What did the documentation say?
>
> robert

Nicely done, Robert!
--
Posted via http://www.ruby-....

Nick Bhanji

11/7/2008 3:02:00 PM

0

Sebastian Hungerecker wrote:
> Nick Bhanji wrote:
>> My questions:
>> 1. why is equal? listed in the methods for the array
>> 2. what is the definition of equal? in the case of array?
>> 3. why is there another function eql? performing the actual equal test
>
> 1. Where exactly is it listed? It's not listed in the docs for Array.
> equal? is defined by Object and it is not overridden for any core class.
> 2. The same as for anything else: a.equal? b is true if and only if a
> and b
> are actually the same object (i.e. both a and b point to the same
> location in
> memory)

you are correct to say that equal? is not in the Array docs. However,
when I executed
a = [1,1]
a.methods

equal? method is there on the list of methods supported by the object
Array that is used by the variable a.

> 3. eql? does not perform the "actual equal test" - whatever that is.
> eql? is
> to be used together with hash (and is indeed used that way by Hash, Set
> and

"array.eql?(other) â?? true or false
Returns true if array and other are the same object, or are both arrays
with the same content. " --- from
http://ruby-doc.org/core/classes/...

> Array#&, Array#| and Array#-).
> 4. The method that I assume you're looking for is ==
>
> HTH,
> Sebastian
--
Posted via http://www.ruby-....

Nick Bhanji

11/7/2008 3:12:00 PM

0

Nick Bhanji wrote:
> Sebastian Hungerecker wrote:
>> Nick Bhanji wrote:
>>> My questions:
>>> 1. why is equal? listed in the methods for the array
>>> 2. what is the definition of equal? in the case of array?
>>> 3. why is there another function eql? performing the actual equal test
>>
>> 1. Where exactly is it listed? It's not listed in the docs for Array.
>> equal? is defined by Object and it is not overridden for any core class.
>> 2. The same as for anything else: a.equal? b is true if and only if a
>> and b
>> are actually the same object (i.e. both a and b point to the same
>> location in
>> memory)
>
> you are correct to say that equal? is not in the Array docs. However,
> when I executed
> a = [1,1]
> a.methods
>
> equal? method is there on the list of methods supported by the object
> Array that is used by the variable a.
>
>> 3. eql? does not perform the "actual equal test" - whatever that is.
>> eql? is
>> to be used together with hash (and is indeed used that way by Hash, Set
>> and
>
> "array.eql?(other) â?? true or false
> Returns true if array and other are the same object, or are both arrays
> with the same content. " --- from
> http://ruby-doc.org/core/classes/...
>
>> Array#&, Array#| and Array#-).
>> 4. The method that I assume you're looking for is ==
>>
>> HTH,
>> Sebastian

I did find the reference page that you probably used to explain. I got
the reference that explains my imprise definition of equality that you
were trying to explain.

http://kentreis.wordpress.com/2007/02/08/identity-and-equality-in-ruby-and-...

thank you everyone.

Nick.B
--
Posted via http://www.ruby-....

Sebastian Hungerecker

11/7/2008 3:24:00 PM

0

Nick Bhanji wrote:
> Now my
> conclusion is that no to trust methods function -- because it does not
> do what it is supposed to do -- that is allow a programmer to know what
> methods are supported.

Wtf? [].methods lists equal? because equal? is defined by Object and is as
such available to be called on all objects including arrays. It is not listed
in the docs of Array because it is defined by Object, not Array, and is not
redefined by Array either. You can perfectly well call equal? on an array and
it will behave like the docs for Object#equal? say it will.

HTH,
Sebastian
--
Jabber: sepp2k@jabber.org
ICQ: 205544826

Nick Bhanji

11/7/2008 3:28:00 PM

0

Sebastian Hungerecker wrote:
> Nick Bhanji wrote:
>> Now my
>> conclusion is that no to trust methods function -- because it does not
>> do what it is supposed to do -- that is allow a programmer to know what
>> methods are supported.
>
> Wtf? [].methods lists equal? because equal? is defined by Object and is
> as
> such available to be called on all objects including arrays. It is not
> listed
> in the docs of Array because it is defined by Object, not Array, and is
> not
> redefined by Array either. You can perfectly well call equal? on an
> array and
> it will behave like the docs for Object#equal? say it will.
>
> HTH,
> Sebastian

You gotta chill, I am trying to use a language -- not get anyone riled
up..
smile and be happy
--
Posted via http://www.ruby-....

Sebastian Hungerecker

11/7/2008 3:34:00 PM

0

Nick Bhanji wrote:
> You gotta chill,

I am chilled. My "wtf" was an expression of confusion, not anger or "riled
up-ness".

--
Jabber: sepp2k@jabber.org
ICQ: 205544826

Nick Bhanji

11/7/2008 3:37:00 PM

0

Sebastian Hungerecker wrote:
> Nick Bhanji wrote:
>> You gotta chill,
>
> I am chilled. My "wtf" was an expression of confusion, not anger or
> "riled
> up-ness".

We're cool -- have a wonderful day
--
Posted via http://www.ruby-....