# Nuby - NEW case/when question

**URL:** <https://www.ruby-forum.com/t/nuby-new-case-when-question/75483>\
**Category:** Ruby\
**Created:** [March 1, 2006, 10:50pm UTC](https://www.ruby-forum.com/t/nuby-new-case-when-question/75483 "2006-03-01T22:50:10Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 1, 2006, 10:50pm UTC](https://www.ruby-forum.com/t/nuby-new-case-when-question/75483/1 "2006-03-01T22:50:10Z")

</div>

I have a new question regarding \_why’s post [1].

[1] [http://redhanded.hobix.com/bits/wonderOfTheWhenBeFlat.html](http://redhanded.hobix.com/bits/wonderOfTheWhenBeFlat.html)

In the comments he explains that \*/asterisk is now being used as a  
replacement for the method #to\_a. But I don’t see how that’s true.  
Let’s look at an example.

irb(main):001:0\> @r1 = (0…10)  
=\> 0…10  
irb(main):002:0\> @r2 = (11…20)  
=\> 11…20  
irb(main):003:0\> def foo a  
irb(main):004:1\> case a  
irb(main):005:2\> when _@r1  
irb(main):006:2\> puts “#{a} in range r1”  
irb(main):007:2\> when @r2.to\_a  
irb(main):008:2\> puts “#{a} in range r2”  
irb(main):009:2\> else  
irb(main):010:2_ puts “#{a} NOT in any defined range”  
irb(main):011:2\> end  
irb(main):012:1\> end  
=\> nil  
irb(main):013:0\> foo 3  
3 in range r1  
=\> nil  
irb(main):014:0\> foo 12  
12 NOT in any defined range  
=\> nil

If \* is really equivalent to #to\_a in this case, then the second  
“when” test should succeed when passed argument 12, right? As can be  
seen from the output, it triggers the else clause.

I looked up \* in the 2nd Ed PickAxe and it doesn’t cover this  
functionality at all. It talks about \* being used in patterns and in  
coalescing method argument lists.

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [March 1, 2006, 11:58pm UTC](https://www.ruby-forum.com/t/nuby-new-case-when-question/75483/2 "2006-03-01T23:58:42Z")

</div>

removed\_email\_address@domain.invalid wrote:

> I have a new question regarding \_why’s post [1].
> 
> [1] [http://redhanded.hobix.com/bits/wonderOfTheWhenBeFlat.html](http://redhanded.hobix.com/bits/wonderOfTheWhenBeFlat.html)
> 
> In the comments he explains that \*/asterisk is now being used as a  
> replacement for the method #to\_a. But I don’t see how that’s true.

In the comment, he’s talking about something different, not case/when  
related. (Using the splat with array construction instead of using  
Object#to\_a to convert a non-array object to a single-element array.)

In case/when, it’s instead of if … include?.

case name  
when \*board\_members  
when \*historians

vs.

if board\_members.include?(name)  
elsif historians.include?(name)  
…

Cheers,  
Dave
