# ? true : false returns nil?

**URL:** <https://www.ruby-forum.com/t/true-false-returns-nil/165617>\
**Category:** Ruby\
**Created:** [April 15, 2009, 7:03pm UTC](https://www.ruby-forum.com/t/true-false-returns-nil/165617 "2009-04-15T19:03:44Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![rcordner](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/50afbb/32.png) [@rcordner](https://www.ruby-forum.com/u/rcordner)\
**Post date:** [April 15, 2009, 7:03pm UTC](https://www.ruby-forum.com/t/true-false-returns-nil/165617/1 "2009-04-15T19:03:44Z")

</div>

I have the following code fragment:

i = 1  
j = case i  
when 1  
true  
else  
false  
end

I would expect j to equal true after the run, but it equals nil. If I  
change the return values to anything else but true and false, it works  
as expected. Am I missing some special handling of true and false?  
Thanx.

---

<div class="post-metadata">

**Author:** ![rcordner](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/50afbb/32.png) [@rcordner](https://www.ruby-forum.com/u/rcordner)\
**Post date:** [April 15, 2009, 7:11pm UTC](https://www.ruby-forum.com/t/true-false-returns-nil/165617/2 "2009-04-15T19:11:33Z")

</div>

Russ C. wrote:

> I have the following code fragment:
> 
> i = 1  
> j = case i  
> when 1  
> true  
> else  
> false  
> end
> 
> I would expect j to equal true after the run, but it equals nil. If I  
> change the return values to anything else but true and false, it works  
> as expected. Am I missing some special handling of true and false?  
> Thanx.

I just tried this, and couldn’t replicate your result. What Ruby are  
you using?

$ irb -v  
irb 0.9.5(05/04/13)  
$ irb  
irb(main):001:0\> i = 1  
=\> 1  
irb(main):002:0\> j = case i  
irb(main):003:1\> when 1  
irb(main):004:1\> true  
irb(main):005:1\> else  
irb(main):006:1\* false  
irb(main):007:1\> end  
=\> true  
irb(main):008:0\> true ? true : false  
=\> true  
irb(main):009:0\> false ? true : false  
=\> false  
irb(main):006:0\> 1 ? true : false  
=\> true  
irb(main):005:0\> nil ? true : false  
=\> false

---

<div class="post-metadata">

**Author:** ![rcordner](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/50afbb/32.png) [@rcordner](https://www.ruby-forum.com/u/rcordner)\
**Post date:** [April 15, 2009, 7:19pm UTC](https://www.ruby-forum.com/t/true-false-returns-nil/165617/3 "2009-04-15T19:19:40Z")

</div>

> I just tried this, and couldn’t replicate your result. What Ruby are  
> you using?

I’m using ruby 1.8.5 on Linux Centos under the Netbeans IDE.

---

<div class="post-metadata">

**Author:** ![rcordner](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/50afbb/32.png) [@rcordner](https://www.ruby-forum.com/u/rcordner)\
**Post date:** [April 16, 2009, 4:41pm UTC](https://www.ruby-forum.com/t/true-false-returns-nil/165617/4 "2009-04-16T16:41:02Z")

</div>

Russ C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> I would expect j to equal true after the run, but it equals nil. If I  
> change the return values to anything else but true and false, it works  
> as expected. Am I missing some special handling of true and false?  
> Thanx.

(apologies for replying by email previously)

I tried the above and it worked for me as expected:

irb(main):023:0\> i = 1  
=\> 1  
irb(main):024:0\> j = case i  
irb(main):025:1\> when 1  
irb(main):026:1\> true  
irb(main):027:1\> else  
irb(main):028:1\* false  
irb(main):029:1\> end  
=\> true  
irb(main):030:0\> j  
=\> true

---

<div class="post-metadata">

**Author:** ![rcordner](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/50afbb/32.png) [@rcordner](https://www.ruby-forum.com/u/rcordner)\
**Post date:** [April 15, 2009, 7:25pm UTC](https://www.ruby-forum.com/t/true-false-returns-nil/165617/5 "2009-04-15T19:25:11Z")

</div>

Russ C. wrote:

> > I just tried this, and couldn’t replicate your result. What Ruby are  
> > you using?
> 
> I’m using ruby 1.8.5 on Linux Centos under the Netbeans IDE.

Its a bug in the Netbeans IDE. The IDE says it’s still nil, but a puts  
reveals the correct value. Thanx Don!
