Ruby 1.9 named arguments

B

bparanj

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:in
`evaluate'
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:in `block (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:in `block 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:in
`loop'
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:in
`catch'
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:in `eval_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:in `catch'
from /Users/bparanj/ruby19/lib/ruby/1.9.0/irb.rb:69:in `start'
from /Users/bparanj/ruby19/bin/irb:13:in `<main>'
Maybe IRB bug!!
 
D

David A. Black

Hi --

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

--
Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS April 14-17 New York City
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
See http://www.rubypal.com for details and updates!
 
T

Tim Hunter

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
 
R

Rick DeNatale

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}
 
D

David A. Black

Hi --

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

--
Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS April 14-17 New York City
INTRO TO RAILS June 9-12 Berlin
ADVANCING WITH RAILS June 16-19 Berlin
See http://www.rubypal.com for details and updates!
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,755
Messages
2,569,535
Members
45,007
Latest member
obedient dusk

Latest Threads

Top