maghac wrote:
> On Aug 14, 11:11 am, "Robert Dober" <robert.do... / gmail.com> wrote:
>   
>> On 8/14/07, maghac <magnus.hac... / gmail.com> wrote:
>>
>>     
>>> Hi,
>>> as a long-term perl user just recently converted to ruby, I'm curious
>>> about one particular syntax "feature": ruby symbols and how they
>>> relate to strings.
>>>       
>>> Isn't really :name a shortcut for "name"? (I read somewhere in an
>>> explanation of attr_reader that e.g :age was the "name" of the
>>> variable age, while age is the actual content of that variable). If
>>> so, couldn't you use this in hash keys as well, e.g say hashvar[:key]
>>> instead of hashvar['key'].
>>>       
>>> Are there situations where you cannot use symbols instead of strings,
>>> or the other way around?
>>>       
>>> I might be too used to the way strings and barewords are handled in
>>> perl (if something looks like a string, and it's not a function call,
>>> it's interpreted as a string. This means you can say $hashvar{key}
>>> without quoting the key).
>>>       
>> This question is asked very frequently, please search the archives for
>> more info.
>> I will try to give a very quick answer nevertheless:
>>
>> Symbols are immutable, thus great to represent immutable data, often
>> that makes them an excellent choice for hash keys
>> { :the_value => 42, :alternatively => 22, :or_even => 101010 }
>> they just do not play the role of Strings, coming from Perl you just
>> had to use Strings, you did not have a tool for names (wait a moment
>> was there not such a thing as references to constants?).
>> Very roughly put I see Symbols as name, and Strings as data, whenever
>> I can use Symbols I use them, comes natural after some time.
>>
>> HTH
>> Robert
>> --
>> [...] as simple as possible, but no simpler.
>> -- Attributed to Albert Einstein
>>     
>
> Thanks, that cleared a few things for me.
>
> I found something in the FAQ about it, but it didn't really answer my
> question on the differences/similiarities between symbols and strings.
>
> thanks
> Magnus
>
>
>   
Don't make more out of this than there is. A symbol is a kind of literal 
in Ruby. It's the name of a number. You pick the name, Ruby picks the 
number. Ruby guarantees that whenever you use the symbol in your program 
it will always refer to the same number.

That's it. That's all there is. Really.

Given a symbol, you can retrieve its name in the form of a string with 
the #to_s method. You can convert a string (or almost any sequence of 
characters, for that matter) to a symbol with the #to_sym method. Most 
methods that accept symbol arguments, like attr_reader and kin, accept 
strings as well. All attr_reader does with your symbol is use its name 
as the name of the attribute.

-- 
RMagick OS X Installer [http://rubyforge.org/projects/rmagick/]
RMagick Hints & Tips [http://rubyforge.org/forum/forum.php?forum_id=1618]
RMagick Installation FAQ [http://rmagick.rubyforge.org/install-faq.html]