Ruby 1.9 named arguments

Discussion in 'Ruby' started by bparanj@gmail.com, Mar 30, 2008.

  1. Guest

    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!!
    , Mar 30, 2008
    #1
    1. Advertising

  2. Hi --

    On Mon, 31 Mar 2008, 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.rubypal.com for details and updates!
    David A. Black, Mar 30, 2008
    #2
    1. Advertising

  3. Tim Hunter Guest

    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.rubyforge.org/
    RMagick 2: http://rmagick.rubyforge.org/rmagick2.html
    Tim Hunter, Mar 30, 2008
    #3
  4. On Sun, Mar 30, 2008 at 2:20 PM, <> 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/
    Rick DeNatale, Mar 30, 2008
    #4
  5. Hi --

    On Mon, 31 Mar 2008, Tim Hunter wrote:

    > 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.rubypal.com for details and updates!
    David A. Black, Mar 30, 2008
    #5
  6. Tim Hunter Guest

    Tim Hunter, Mar 30, 2008
    #6
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Fuzzyman
    Replies:
    2
    Views:
    292
    Fuzzyman
    Feb 22, 2005
  2. Ramashish Baranwal

    Passing variable number of named arguments

    Ramashish Baranwal, Dec 27, 2006, in forum: Python
    Replies:
    2
    Views:
    263
    Ramashish Baranwal
    Dec 28, 2006
  3. Andrey Vul
    Replies:
    5
    Views:
    634
    Saeed Amrollahi
    Nov 4, 2009
  4. Tim Chase
    Replies:
    2
    Views:
    123
    Tim Chase
    Oct 9, 2011
  5. Roger Pack
    Replies:
    2
    Views:
    107
    Roger Pack
    Jan 4, 2010
Loading...

Share This Page