# Use not equal(!=) operator as a Symbol

**URL:** <https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502>\
**Category:** Ruby\
**Created:** [December 29, 2008, 7:59am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502 "2008-12-29T07:59:23Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 29, 2008, 7:59am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/1 "2008-12-29T07:59:23Z")

</div>

Hi, all

I try to use comparision operator as a symbol type.

but, I met the following problems.

Here is my example.

irb(main):001:0\> a = 1  
=\> 1  
irb(main):002:0\> a.send(:==, 1)  
=\> true  
irb(main):003:0\> a.send(:==, 2)  
=\> false  
irb(main):004:0\> a.send(:\>, 0)  
=\> true  
irb(main):005:0\> a.send(:\>, 2)  
=\> false  
irb(main):006:0\> a.send(:!=, 2)  
SyntaxError: compile error  
(irb):6: syntax error, unexpected tNEQ, expecting tSTRING\_CONTENT or  
tSTRING\_DBEG or tSTRING\_DVAR or tSTRING\_END  
a.send(:!=, 2)  
^  
from (irb):6  
from :0  
irb(main):007:0\> a.send(’==’, 2)  
=\> false  
irb(main):008:0\> a.send(’!=’, 2)  
NoMethodError: undefined method `!=' for 1:Fixnum from (irb):8:in`send’  
from (irb):8  
from :0  
irb(main):009:0\>

Is any idea?

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 29, 2008, 8:55am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/2 "2008-12-29T08:55:37Z")

</div>

On Dec 28, 2008, at 22:58 , Jun Y. Kim wrote:

> irb(main):008:0\> a.send(’!=’, 2)  
> NoMethodError: undefined method `!=' for 1:Fixnum from (irb):8:in`send’  
> from (irb):8  
> from :0

there is no ‘!=’ method, there is only ‘==’. you should send ‘==’ and  
not/! the result:

! a.send(’==’, 2)

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 29, 2008, 9:00am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/3 "2008-12-29T09:00:53Z")

</div>

Hi.

AFAIK, != gets converted by Ruby when your program is read. For example,  
foo  
!= bar becomes !(foo == bar).

Regards,  
Yaser S.

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 29, 2008, 9:17am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/4 "2008-12-29T09:17:51Z")

</div>

irb(main):006:0\> a.send(:!=, 2)  
SyntaxError: compile error  
(irb):6: syntax error, unexpected tNEQ, expecting tSTRING\_CONTENT or  
tSTRING\_DBEG or tSTRING\_DVAR or tSTRING\_END  
a.send(:!=, 2)  
^  
from (irb):6  
from :0

As you see, ruby can recognize a != as a tNEG(not equals).

so , I convinced a method is existed for this type of a comparison.

I have to use a workaround way, ;-\<

1. 
  1. 29, ì˜¤í›„ 4:54, Ryan D. ìž‘ì„±:

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 30, 2008, 1:37am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/5 "2008-12-30T01:37:20Z")

</div>

On Dec 29, 2008, at 04:16 , David A. Black wrote:

> > > from (irb):8  
> > > ruby 1.9.1 (2008-12-14 revision 20738) [i386-darwin9.5.0]  
> > > true

that’s a bug, == and != shouldn’t be able to disagree:

> > class X; def == o; :great; end; def != o; :horrible; end; end  
> > =\> nil
> 
> > x = X.new  
> > =\> #\<X:0x419948\>
> 
> > x == 0  
> > =\> :great
> 
> > x != 0  
> > =\> :horrible

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 29, 2008, 1:17pm UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/6 "2008-12-29T13:17:45Z")

</div>

Hi –

On Mon, 29 Dec 2008, Ryan D. wrote:

> the result:
> 
> ! a.send(’==’, 2)

In 1.9 != becomes a method:

$ ruby19 -ve ‘p 1.send("!=", 2)’  
ruby 1.9.1 (2008-12-14 revision 20738) [i386-darwin9.5.0]  
true

David

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 30, 2008, 1:37am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/7 "2008-12-30T01:37:56Z")

</div>

On Dec 29, 2008, at 00:17 , Jun Y. Kim wrote:

> irb(main):006:0\> a.send(:!=, 2)  
> SyntaxError: compile error  
> (irb):6: syntax error, unexpected tNEQ, expecting tSTRING\_CONTENT or  
> tSTRING\_DBEG or tSTRING\_DVAR or tSTRING\_END  
> a.send(:!=, 2)  
> ^  
> from (irb):6  
> from :0
> 
> As you see, ruby can recognize a != as a tNEG(not equals).

no. you’re getting a syntax error because :!= is not a valid symbol,  
but :"!=" is. Try that and you’ll see that there is no such method.

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 30, 2008, 1:56am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/8 "2008-12-30T01:56:04Z")

</div>

Hi, Ryan

This is still unavailable way on version 1.8.7.

According to previous responses, I think the way to use what I want is  
just to update ruby’s version :).

1. 
  1. 30, ¿ÀÀü 9:37, Ryan D. ÀÛ¼º:

---

<div class="post-metadata">

**Author:** ![Jun\_YSKim](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/a587f6/32.png) [@Jun\_YSKim](https://www.ruby-forum.com/u/Jun_YSKim)\
**Post date:** [December 30, 2008, 1:53am UTC](https://www.ruby-forum.com/t/use-not-equal-operator-as-a-symbol/156502/9 "2008-12-30T01:53:44Z")

</div>

Hi, David.

This is a really good news for me 🙂

but, the only option I can take is just a version 1.8.7 ;-\<

anyway, thank you~ 🙂

1. 
  1. 29, ¿ÀÈÄ 9:16, David A. Black ÀÛ¼º:
