Ruby 1.9 named arguments

When I run the following in the irb session, I am getting an error.
Any ideas why? TIA.
irb(main):036:0> { :a => 1, :b => 4 }
=> {:a=>1, :b=>4}
irb(main):037:0> { :x 2, :y 6 }
SyntaxError: (irb):37: syntax error, unexpected tINTEGER, expecting
tASSOC
{ :x 2, :y 6 }
^
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/workspace.rb:81:in
eval' from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/workspace.rb:81:inevaluate’
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/context.rb:219:in
evaluate' from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:150:inblock (2
levels) in eval_input’
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:259:in
signal_status' from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:147:inblock in
eval_input’
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/ruby-lex.rb:244:in
block (2 levels) in each_top_level_statement' from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/ruby-lex.rb:231:inloop’
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/ruby-lex.rb:231:in
block in each_top_level_statement' from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/ruby-lex.rb:230:incatch’
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb/ruby-lex.rb:230:in
each_top_level_statement' from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:146:ineval_input’
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:70:in block in start' from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:69:incatch’
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:69:in start' from /Users/bparanj/ruby19/bin/irb:13:in
Maybe IRB bug!!

Hi –

On Mon, 31 Mar 2008, [email protected] wrote:

When I run the following in the irb session, I am getting an error.
Any ideas why? TIA.
irb(main):036:0> { :a => 1, :b => 4 }
=> {:a=>1, :b=>4}
irb(main):037:0> { :x 2, :y 6 }
SyntaxError: (irb):37: syntax error, unexpected tINTEGER, expecting
tASSOC
{ :x 2, :y 6 }
^

You mean:

{ x: 2, y: 6 }

David

[email protected] wrote:

When I run the following in the irb session, I am getting an error.
Any ideas why? TIA.
irb(main):036:0> { :a => 1, :b => 4 }
=> {:a=>1, :b=>4}
irb(main):037:0> { :x 2, :y 6 }
SyntaxError: (irb):37: syntax error, unexpected tINTEGER, expecting
tASSOC
{ :x 2, :y 6 }
^

I think you’re confusing symbol hash keys with 1.9’s named arguments:

foo(:a => 1, :b => 2) # symbol hash keys
foo(a:1, b:2) # 1.9 named arguments

Hi –

On Mon, 31 Mar 2008, Tim H. wrote:

I think you’re confusing symbol hash keys with 1.9’s named arguments:

foo(:a => 1, :b => 2) # symbol hash keys
foo(a:1, b:2) # 1.9 named arguments

They’re still symbols in a hash, though. Just the notation is
different:

irb(main):004:0> def x(a); p a; end
=> nil
irb(main):005:0> x(x: 1, y: 2)
{:x=>1, :y=>2}

David

On Sun, Mar 30, 2008 at 2:20 PM, [email protected] [email protected]
wrote:

When I run the following in the irb session, I am getting an error.
Any ideas why? TIA.
irb(main):036:0> { :a => 1, :b => 4 }
=> {:a=>1, :b=>4}
irb(main):037:0> { :x 2, :y 6 }
SyntaxError: (irb):37: syntax error, unexpected tINTEGER, expecting
tASSOC
{ :x 2, :y 6 }
^

Is this what you were trying to do?

$ irb1.9
irb(main):001:0> {x: 2, y: 6}
=> {:x=>2, :y=>6}


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

David A. Black wrote:

They’re still symbols in a hash, though. Just the notation is
different:

I see. Thanks for explaining.