I can't get hash list params working


#1

Hi

I must be doing something stoopid here. Can anyone explain why I get
an error on the last line of this irb session?

irb(main):014:0> def a(a=nil,*b)
irb(main):015:1> puts a.inspect
irb(main):016:1> puts b.inspect
irb(main):017:1> end
=> nil
irb(main):018:0> a(1 => “one”, 2 => “two”)
{1=>“one”, 2=>“two”}
[]
=> nil
irb(main):019:0> a(1 => “one”, 2 => “two”, 1)
SyntaxError: compile error
(irb):19: parse error, unexpected ‘)’, expecting tASSOC
from (irb):19
from :0

Surely the output should be
{1=>“one”, 2=>“two”}
[1]
?

I tried the example in Pickaxe v2 (p349) and got a similar error.
Someone please slap my head for me :slight_smile:

thanks
Ashley


#2

Hi –

On Sun, 2 Apr 2006, Ashley M. wrote:

irb(main):018:0> a(1 => “one”, 2 => “two”)
Surely the output should be
{1=>“one”, 2=>“two”}
[1]
?

You can only use the “magic” hash argument if it’s the last thing in
the arglist. If it isn’t, you have to write it like a regular hash:

a({1 => “one”, 2 => “two”}, 1)

David


David A. Black (removed_email_address@domain.invalid)
Ruby Power and Light, LLC (http://www.rubypowerandlight.com)

“Ruby for Rails” chapters now available
from Manning Early Access Program! http://www.manning.com/books/black