-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

One thing to keep in mind is that, as far as I know, symbols are  
never garbage collected, so their excessive/inappropriate use might  
introduce risk of memory leaks.

George

On 30 May 2007, at 00:06, Dave Grijalva wrote:

> I think the second point that Emilio was making is the more  
> important one.
> Let me try to clarify:
>
> irb(main):008:0> puts "foo".object_id
> 1724824
> => nil
> irb(main):009:0> puts "foo".object_id
> 1708744
> => nil
> irb(main):010:0> puts :foo.object_id
> 3678478
> => nil
> irb(main):011:0> puts :foo.object_id
> 3678478
>
>
> You can see here that a new String object is created every time you  
> use a
> literal string.  With a symbol, however, you are re-using the same  
> object
> anywhere you use a symbol with the same name.  Using symbols can  
> save you a
> lot of resources, both processor time and memory.
>
> -dave
>
> On 5/29/07, Emilio Tagua <miloops / gmail.com> wrote:
>>
>> 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
>>
>>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (Darwin)

iD8DBQFGXTZcuHSlGoVGf7URAqhKAKC28rsjkJ7tv2f1rxsdidLachrB6QCgs50D
qqsnSiEX19rHfPqzA9z9/DI=
=tKg1
-----END PGP SIGNATURE-----