Forum: Ruby Very Basic Question

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
5bd2a620a47d2dce46a544439cec09af?d=identicon&s=25 Gilman Gunn (gilmangunn)
on 2008-12-07 08:56
Hi all,

I have a very basic question... what does "=>" mean? Two books I have
looked at started using it without explaining and it is filtered in most
searches.

My guess is that it has something to do with assignment but am not sure.

If anyone could shed some light on this it would be much appreciated.

Thanks.
05be5d6610e2c3f1780aa0e39e902e93?d=identicon&s=25 Farrel Lifson (Guest)
on 2008-12-07 09:12
(Received via mailing list)
2008/12/7 Gilman Gunn <gilmangunn@comcast.net>:
> I have a very basic question... what does "=>" mean?

It's how you assign values to keys in a hash.

letter_values = { 'a' => 1, 'b' => 2, 'c' => 3,..., z => '26' }
letter_values['b'] # 2
letter_values['j'] # 10

Farrel
Fd22ee3cfc7dac283ce8e451af324f7d?d=identicon&s=25 Chad Perrin (Guest)
on 2008-12-07 09:57
(Received via mailing list)
On Sun, Dec 07, 2008 at 04:49:46PM +0900, Gilman Gunn wrote:
> Hi all,
>
> I have a very basic question... what does "=>" mean? Two books I have
> looked at started using it without explaining and it is filtered in most
> searches.
>
> My guess is that it has something to do with assignment but am not sure.
>
> If anyone could shed some light on this it would be much appreciated.

In addition to being used to assign values in hashes, it is also how the
interactive Ruby interpreter (called "irb") shows the return value for
an
expression.  For instance, at my tcsh console one might see this:

    ~> irb
    irb(main):001:0> foo = 'first'
    => "first"
    irb(main):002:0> bar = 'second'
    => "second"
    irb(main):003:0> print foo, ' and ', bar, "\n"
    first and second
    => nil

These return value indicators are useful for figuring out exactly what a
given expression does when writing code -- you may have an editor open
in
which you are writing a program and, in another terminal emulator
window,
have irb running so you can check how various expressions are evaluated
so you don't have to guess or constantly search through documentation to
be sure you're using expressions correctly.

The `=>` in this usage is not actually part of the code, though the `=>`
in hash assignments *is* part of the code (of course).

I hope that helps.  Other than those two uses of the `=>` character
sequence, nothing springs immediately to mind.
B09f4659460545e38ece34ddd0d96b46?d=identicon&s=25 Yaser Sulaiman (Guest)
on 2008-12-07 14:54
(Received via mailing list)
Using => in method calls used to puzzle me. I encountered this for the
first
time in FXRuby, and then in Ruby on Rails.

It turned out that Ruby allows you to give a hash when invoking a
method,
where arguments to the method get rolled up into one hash variable.
Consider
this example (stolen from the Ruby Programming Wikibook[0]):

def accept_hash(var)
    print "got: ", var.inspect
end
accept_hash :arg1 => 'giving arg1', :argN => 'giving argN'

Hope you find this helpful.

Regards,
Yaser Sulaiman

[0] http://en.wikibooks.org/wiki/Ruby_Programming

P.S. In the 1st edition of Programming Ruby, it is mentioned that
keyword
arguments "are scheduled to be implemented in Ruby 1.8". Is this it
(i.e.
the keyword arguments feature), or is it something else?
Aafa8848c4b764f080b1b31a51eab73d?d=identicon&s=25 Phlip (Guest)
on 2008-12-07 15:26
(Received via mailing list)
Yaser Sulaiman wrote:

> def accept_hash(var)
>     print "got: ", var.inspect
> end
> accept_hash :arg1 => 'giving arg1', :argN => 'giving argN'

Better, Ruby 1.9 will let us fold the symbol and => notation:

   arg1: 'giving arg1', argN: 'giving argN'

This means that Ruby has invented the "named argument" system, but it
did it the
right way; by building the feature out of low-level syntax elements that
we can
reuse for other situations. Ruby did not do what some languages do -
invent
named arguments using their own magic system that only works in method
argument
lists.
5bd2a620a47d2dce46a544439cec09af?d=identicon&s=25 Gilman Gunn (gilmangunn)
on 2008-12-07 19:05
Thx so much guys... I finally have my app up and running. No doubt more
questions will follow!
This topic is locked and can not be replied to.