Lähettäjä: James Edward Gray II <james@grayproductions.net>
Aihe: Re: symbols vs strings vs ?
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?
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..."
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 = file_handle.gets.intern
if /xyz/.match(sym.to_s) ...
>> James Edward Gray II <james@grayproductions.net>
>> Aihe: Re: symbols vs strings vs ?
>>
>>> 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?
>
> 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..."
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
···
On Thu, 3 Feb 2005, E S wrote:
>> On Feb 2, 2005, at 7:53 PM, E S wrote:
* Use strings when content matters
* Use symbols when identity matters.
···
On Wednesday 02 February 2005 11:11 pm, David A. Black wrote:
I'm still not convinced that there's any reason to favor having such
things be symbols.
--
-- Jim Weirich jim@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)