? true : false returns nil?


#1

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.


#2

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


#3

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.


#4

Russ C. 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


#5

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!