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