Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Nuby - NEW case/when question
Chuck Remes
3/1/2006 9:50:00 PM
I have a new question regarding _why's post [1].
[1]
http://redhanded.hobix.com/bits/wonderOfTheWhenB...
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.
1 Answer
dave.burt
3/1/2006 10:56:00 PM
0
cremes.devlist@mac.com wrote:
> I have a new question regarding _why's post [1].
>
> [1]
http://redhanded.hobix.com/bits/wonderOfTheWhenB...
>
> 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
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Nuby - NEW case/when question
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password