Thanks,
Joe
Symbols are immutable strings. Every occurence of the same symbol
correspondes to the same single object, while every occurence of the
same string is a different object (with the same value). Thus symbols
are a bit faster and cheaper to use in things like case statements,
hash keys etc.
It's also usually a bit nicer to read in the code, as it signifies that
what you're looking it at is a unique identifier, rather than something
that can have a dynamic content.
HTH,
Assaph
It did help! Thanks.
Always use a Symbol rather than a String, except if you
need to be able to print the string to file/screen/etc.
E
> Always use a Symbol rather than a String, except if you
> need to be able to print the string to file/screen/etc.
Hmm, don't think I agree with that. What it you need to modify its
contents? What if you want to use some of String's many helper
methods?
James Edward Gray II
The way I thought of it is that if you need to modify a string,
it's a string that is going to displayed somehow at some point.
For the sake of disambiguity, however, let's amend that to
"Always use a Symbol rather than a constant String..."
> James Edward Gray II
E
I wrote:
> I don't think this rigid a distinction really works out in practice.
> For example, let's say you read a string from a file, and then do some
> match operations on it. They don't modify the string (it's constant),
> but it's a bit roundabout to do:
>
> sym =3D file_handle.gets.intern
> if /xyz/.match(sym.to_s) ...
I think I misunderstood you. You meant, I now think, things like:
str = "a constant string"
I'm still not convinced that there's any reason to favor having such
things be symbols. Tiny differences in speed (probably almost
literally undetectable except in loops) are worth avoiding a lot of
:"..." or "...".intern/to_sym calls, I think.
David
--
David A. Black
dbl...@wobblini.net
> I'm still not convinced that there's any reason to favor having such
> things be symbols.
My rule of thumb:
* Use strings when content matters
* Use symbols when identity matters.
--
-- Jim Weirich j...@weirichhouse.org http://onestepback.org
-----------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct,
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)
..and that matches mine, too.
-austin
--
Austin Ziegler * halos...@gmail.com
* Alternate: aus...@halostatue.ca