# Il non metodo !=

**URL:** <https://www.ruby-forum.com/t/il-non-metodo/180376>\
**Category:** IT\
**Created:** [December 18, 2009, 7:40pm UTC](https://www.ruby-forum.com/t/il-non-metodo/180376 "2009-12-18T19:40:54Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![pm3](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a87d85/32.png) [@pm3](https://www.ruby-forum.com/u/pm3)\
**Post date:** [December 18, 2009, 7:40pm UTC](https://www.ruby-forum.com/t/il-non-metodo/180376/1 "2009-12-18T19:40:54Z")

</div>

Scopro oggi che mentre ==, \<=, \< e compagnia sono dei metodi (questo lo  
sapevo), != invece non lo Ã¨. Ossia:

$ irb

> 1.send(“==”, 2)  
> =\> false  
> 1.send(“==”, 1)  
> =\> true
> 
> > 1.send(“!=”, 1)  
> > NoMethodError: undefined method `!=' for 1:Fixnum from (irb):3:in `send’  
> > from (irb):3

Cercando su [RDoc Documentation](http://www.ruby-doc.org/core/) del metodo != non c’Ã¨ proprio  
traccia e neppure di !. Questo vuol dire che != viene trasformato  
dall’interprete nella negazione del risultato del metodo == ?

Il tutto Ã¨ nato da una tabellina di operatori da applicare a coppie di  
valori. Senza != mi tocca fare un caso speciale per trattarlo, ma non Ã¨  
un problema. Ho piÃ¹ che altro la curiositÃ di sapere come funziona != e  
perchÃ© non Ã¨ implementato allo stesso modo degli altri metodi di  
comparazione.

C’Ã¨ qualche esperto che mi possa illuminare?

Grazie!

Paolo

---

<div class="post-metadata">

**Author:** ![pm3](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a87d85/32.png) [@pm3](https://www.ruby-forum.com/u/pm3)\
**Post date:** [December 20, 2009, 9:43am UTC](https://www.ruby-forum.com/t/il-non-metodo/180376/2 "2009-12-20T09:43:16Z")

</div>

Guardando il changelog, sembrano cose relativamente recenti:

Mon Feb 4 14:51:19 2008 Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

- parse.y (rb\_enc\_symname2\_p): support “!”, “!=” and “!~”.  
[ruby-dev:33592]

Mon Dec 10 01:35:06 2007 Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

- parse.y (expr): redefinable not (!) operator.

- parse.y (arg): ditto.

- object.c (rb\_obj\_not): new method “!”.

- object.c (rb\_obj\_not\_equal): new method “!=”.

- object.c (rb\_obj\_not\_match): new method “!~”.

Che versione di Ruby hai? Se scarichi i sorgenti, e fai cosi`:

find . -type f -print0 | xargs -0 -e fgrep -nH -e ‘“!=”’

Cosa trovi?

Strano, comunque, sarei interessato a sapere come funzionava prima…

–  
David N. Welton

[http://www.welton.it/davidw/](http://www.welton.it/davidw/)

[http://www.dedasys.com/](http://www.dedasys.com/)  
Sent from Padua, Veneto, Italy

---

<div class="post-metadata">

**Author:** ![pm3](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/a87d85/32.png) [@pm3](https://www.ruby-forum.com/u/pm3)\
**Post date:** [December 20, 2009, 11:33am UTC](https://www.ruby-forum.com/t/il-non-metodo/180376/3 "2009-12-20T11:33:58Z")

</div>

Leggendo la tua risposta ho googlato ancora un po’ con delle keyword  
diverse da quelle che avevo usato prima di postare la mia domanda ed ho  
trovato [Use not equal(!=) operator as a Symbol - Ruby - Ruby-Forum](http://www.ruby-forum.com/topic/174382)

!= Ã¨ diventato un metodo a partire dalla 1.9. Fino alla 1.8 l’interprete  
applicava il metodo == e ne negava il valore.

Grazie  
Paolo

David W. wrote:

> Guardando il changelog, sembrano cose relativamente recenti:
> 
> Mon Feb 4 14:51:19 2008 Nobuyoshi N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> - parse.y (rb\_enc\_symname2\_p): support “!”, “!=” and “!~”.  
> [ruby-dev:33592]
> 
> Mon Dec 10 01:35:06 2007 Yukihiro M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> - parse.y (expr): redefinable not (!) operator.
> 
> - parse.y (arg): ditto.
> 
> - object.c (rb\_obj\_not): new method “!”.
> 
> - object.c (rb\_obj\_not\_equal): new method “!=”.
> 
> - object.c (rb\_obj\_not\_match): new method “!~”.
> 
> Che versione di Ruby hai? Se scarichi i sorgenti, e fai cosi`:
> 
> find . -type f -print0 | xargs -0 -e fgrep -nH -e ‘“!=”’
> 
> Cosa trovi?
> 
> Strano, comunque, sarei interessato a sapere come funzionava prima…
> 
> –  
> David N. Welton
> 
> [David N. Welton](http://www.welton.it/davidw/)
> 
> [http://www.dedasys.com/](http://www.dedasys.com/)  
> Sent from Padua, Veneto, Italy
