On 5/29/07, John Blanco <zablanc / yahoo.com> wrote:
> I'm new to Ruby, but coming up to speed quickly.  One question I still
> have never seen a good explanation to is this: When is it preferred to a
> key a hash with a symbol, and when is it keyed by string?  Is this just
> personal preference, or is there a rule of thumb?
>
> For example, in the Rails book, the session variable is always populated
> with symbols, i.e.:
>
> session[:user] = User.new
>
> It's also obviously completely common throughout the Rails framework
> (e.g., :controller =>, :action =>, etc.)
>
> So, when should I use what...or what should I prefer?

Symbols are ligh-weight, they don't have so much methods to initialize
has strings:

 irb(main):009:0> :asd.methods.size
=> 45
irb(main):010:0> "asd".methods.size
=> 143

So thats why you use it in params or other places when you just need
the name. Also a difference is that a symbol :sym is :sym everywhere,
but a string "string" -only the string, not assigned to a variable- is
a different refence to a String object  each time you write "string" .

Those are the most important diferences IMO. Sorry if i wasn't that clear tho.

Cheers