Yet another try ...

A symbol is an object with a string name. No two symbols (with different 
object_id) can have the same name string.

The literal
  :x
evaluates to a symbol with name "x", creating the symbol if necessary.


"Dave Howell" <groups / grandfenwick.net> wrote in message 
news:cfe9ee0530a44c3082704317b922535c / grandfenwick.net...
>I was actually doing really well until the strange discussion involving 
>throwing constants into the mix showed up, so I'm ignoring that.
>
> Steve's Newby Guide was excellent, if overly-complicated.
>
> Extremely useful item (I think from Gregory, but I'm not sure):
>
> attr_accessor "liquids", "solids"
>
> as effective and functional as
>
> attr_accessor :liquids, :solids
>
>
>
> So Steve, or anybody, I've learned that I can :mysymbol.to_i and I get an 
> integer back. OK, I give up. What possible use do I have for this zany 
> parlor trick? I'll hazard a guess that, as a "normal" programmer, not 
> doing system-level stuff, not extending Ruby, not trying to do something 
> dense and clever and incomprehensible...I don't.
>
> In fact, somebody correct me if I'm wrong, but I could actually never use 
> a Symbol in a single line of Ruby code and I'd still be able to get 
> everything done that I might reasonably want to.
>
>
> Anyway, I'm quite confident I know what a Symbol is now. It's an immutable 
> string.
>
> Stop!! Put your geek away! I didn't say it was a String. It's a string. 
> It's a Merriam-Webster "string1" 5b(2) 'series of like objects (e.g. 
> characters, bits, words)'. It's just a series of characters cemented 
> together, bless its little stable self. What Ruby calls a String is 
> actually some kind of pandimensional quasi-magic method-possessing 
> self-modifying Object, and not an ordinary string at all.
>
> Note that the neologism
> :symbol is to "symbol" as 1 is to "1"
> makes not one iota of sense unless one already understands all the complex 
> ramifications of those quote marks. And given the extra magic powers of 
> double quotes vs. single quotes, well, ick.
>
> A couple of people have tried to advance the idea that a Symbol is a name. 
> I think that's a terrible mistake. On the one hand, here in the real 
> world, people will say something like "Dave is a boy's name," but what 
> that sentence *really* means is "The word 'dave' is normally used only as 
> a name for males."
>
> For me, :dave doesn't become a name until I decide what it's the name 
> *of*. :dave is just a boring old string, and when I say
> attr_accessor :dave
> what I'm actually saying is "Dear routine/module/function named 
> 'attr_accessor,' please create a couple of new methods for my 
> Class/Module/whatever. Use that string I sent you as the name of one which 
> will return the value of a variable also named that, and use it yet again 
> to build a setter method." That'll get me a method named "dave", a method 
> named "dave=", and, hmm. I don't know if "dave=" will work if I don't 
> explicitly set @dave to a value at some point, although I think it will. 
> I'd have to check that to find out.
>
> Anyway, that's not the important point. Nor is the potential "efficiency" 
> of Symbols vs. Strings. Good grief, have you people looked at the 
> millisecond differences that I've been seeing thrown around? We beginners 
> couldn't care less; we just want it to not make lots of errors when it 
> runs, or doesn't run.
>
>
> What I've learned:
> A Symbol is just a modest, simple string. It's optional; I could always 
> use a String instead. It's good for  naming things that are 'inside' my 
> program, and that won't need to be modified, input, output, or generally 
> fiddled with.
>
> or
>
> A Symbol is a non-variable variable (aka a constant) that always and only 
> contains its own name.
>
>
> Seriously, as a newbie, that last sentence is all I need to know. And, 
> quite honestly, probably all I'll *ever* need to know about Symbols.
>
>
>
>
>
>