Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Symbols vs. Strings

Reply
Thread Tools

Symbols vs. Strings

 
 
John Blanco
Guest
Posts: n/a
 
      05-29-2007
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?

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Tim Hunter
Guest
Posts: n/a
 
      05-29-2007
John Blanco 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?


This question comes up a lot. You can search the list archives for
comprehensive discussions. Try
http://groups.google.com/group/comp....95f6051aebe0ae

--
Posted via http://www.ruby-forum.com/.

 
Reply With Quote
 
 
 
 
Emilio Tagua
Guest
Posts: n/a
 
      05-29-2007
On 5/29/07, John Blanco <> 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

 
Reply With Quote
 
George Malamidis
Guest
Posts: n/a
 
      05-30-2007
-----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 <> wrote:
>>
>> On 5/29/07, John Blanco <> 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)

iD8DBQFGXTZcuHSlGoVGf7URAqhKAKC28rsjkJ7tv2f1rxsdid LachrB6QCgs50D
qqsnSiEX19rHfPqzA9z9/DI=
=tKg1
-----END PGP SIGNATURE-----

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Symbols vs. strings as hash_keys - interchangeable or not? Wes Gamble Ruby 8 07-23-2006 08:22 PM
Strings, Strings and Damned Strings Ben C Programming 14 06-24-2006 05:09 AM
symbols vs. strings Mark Volkmann Ruby 0 08-26-2005 12:13 PM
symbols vs strings vs ? Joe Van Dyk Ruby 2 02-03-2005 12:44 AM
rb_hash_aref question: symbols vs strings Daniel Berger Ruby 2 11-28-2003 01:11 PM



Advertisments