[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Ruby 1.9 named arguments

bparanj@gmail.com

3/30/2008 6:17:00 PM

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!!
5 Answers

David A. Black

3/30/2008 6:23:00 PM

0

Hi --

On Mon, 31 Mar 2008, bparanj@gmail.com 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

--
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.r... for details and updates!

Tim Hunter

3/30/2008 6:24:00 PM

0

bparanj@gmail.com 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


--
RMagick: http://rmagick.ruby...
RMagick 2: http://rmagick.ruby...rmagick2.html

Rick DeNatale

3/30/2008 6:29:00 PM

0

On Sun, Mar 30, 2008 at 2:20 PM, bparanj@gmail.com <bparanj@gmail.com> 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.denh...

David A. Black

3/30/2008 6:34:00 PM

0

Hi --

On Mon, 31 Mar 2008, Tim Hunter wrote:

> bparanj@gmail.com 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

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.r... for details and updates!

Tim Hunter

3/30/2008 7:24:00 PM

0

David A. Black wrote:
>
> They're still symbols in a hash, though. Just the notation is
> different:
>

I see. Thanks for explaining.

--
RMagick: http://rmagick.ruby...
RMagick 2: http://rmagick.ruby...rmagick2.html