Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Nuby - NEW case/when question

Reply
Thread Tools

Nuby - NEW case/when question

 
 
cremes.devlist@mac.com
Guest
Posts: n/a
 
      03-01-2006
I have a new question regarding _why's post [1].

[1] http://redhanded.hobix.com/bits/wond...henBeFlat.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.


 
Reply With Quote
 
 
 
 
dave.burt@gmail.com
Guest
Posts: n/a
 
      03-01-2006
wrote:
> I have a new question regarding _why's post [1].
>
> [1] http://redhanded.hobix.com/bits/wond...henBeFlat.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

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
class::new :: --> NUBY Chinna Karuppan Ruby 4 03-19-2008 07:08 PM
nuby question: question marks in method names Edwin Eyan Moragas Ruby 0 08-30-2004 07:11 AM
amrita-nuby question: generate "id=" Harry Ruby 2 01-26-2004 06:54 PM
nuby question: f.rename(x,y) does not work Boris \BXS\ Schulz Ruby 4 01-03-2004 04:19 PM
nuby question re a method Van Jacques Ruby 0 12-10-2003 02:47 AM



Advertisments