--0015175cd11c4f87c9049c5e5e02 Content-Type: text/plain; charset=ISO-8859-1 This is quite good tutorial about symbols and strings here http://www.robertsosinski.com/2009/01/11/the-difference-between-ruby-symbols-and-strings/ On Wed, Feb 16, 2011 at 6:38 AM, John Feminella <johnf / bitsbuilder.com>wrote: > A symbol and a variable are two different things. A symbol is > essentially a special kind of literal, just like a number or a string > is. You cannot assign values to symbols, just like you can't assign > values to numbers or strings -- they are their own values. That is, it > makes no sense to say `42 banana"`, just as it makes no sense to > say `:banana 2`. > > In this case, the author is using the symbol :largecave to represent a > particular location. The reason why he might prefer a symbol literal > to a string literal is that symbols are immutable. "Immutable" means > that you can't do operations on symbols to change them (unlike, say, > strings). Immutability is a good property because it decreases that > number of surprises you can have, and because it makes reasoning about > your program easier. > > ~ jf > -- > John Feminella > Principal Consultant, BitsBuilder > LI: http://www.linkedin.com/in/johnxf > SO: http://stackoverflow.com/users/75170/ > > > > On Tue, Feb 15, 2011 at 19:41, Gaba Luschi <friedoysterlover / gmail.com> > wrote: > > Hi, > > Say you have a method in a class that's defined as this: > > (working from Peter Cooper's Beginning Ruby book, p. 155 of the book) > > > > class Dungeon > > . > > . > > . > > > > def start(location) > > @player.location ocation > > show_current_description > > end > > > > why is it that when you place the player in the large cave, it's > > my_dungeon.start(:largecave) > > > > instead of > > my_dungeon.start(largecave) > > ? > > why is largecave a symbol? > > Thanks so much! > > > > -- > > Posted via http://www.ruby-forum.com/. > > > > > > --0015175cd11c4f87c9049c5e5e02--