From: Abder-rahman Ali on
What is the main difference between using a symbol (begins with :), and
a variable?

When should we use one over another?

Thanks.
--
Posted via http://www.ruby-forum.com/.

From: Jesús Gabriel y Galán on
On Wed, Jul 7, 2010 at 5:51 PM, Abder-rahman Ali
<abder.rahman.ali(a)gmail.com> wrote:
> What is the main difference between using a symbol (begins with :), and
> a variable?

They are two completely different concepts:

- A symbol is an object. It's literal representation is a set of
characters that start with :, but it's a full object with methods,
etc. It has some properties that make them different to other objects,
the most relevant one being that all instances of the literal refer to
the same object:

irb(main):003:0> :test.object_id
=> 87218
irb(main):004:0> :test.object_id
=> 87218

Compare this to, for example, Strings or Arrays:

irb(main):005:0> "test".object_id
=> -610207318
irb(main):006:0> "test".object_id
=> -610213628
irb(main):007:0> [].object_id
=> -610222448
irb(main):008:0> [].object_id
=> -610232888


- A variable is a reference to an object. When you say

a = <some object>

you are creating a local variable that refers to <some object>. That
object could be any object, for example a Symbol:

a = :test

> When should we use one over another?

I don't think this question has any sense, as they are completely
different concepts.

Jesus.

From: Abder-rahman Ali on
Thanks a lot.
--
Posted via http://www.ruby-forum.com/.

From: Jeremy Heiler on
2010/7/7 Jesús Gabriel y Galán <jgabrielygalan(a)gmail.com>

> On Wed, Jul 7, 2010 at 5:51 PM, Abder-rahman Ali
> <abder.rahman.ali(a)gmail.com> wrote:
>
> > When should we use one over another?
>
> I don't think this question has any sense, as they are completely
> different concepts.
>

A better question would be: Why use a symbol? Although, a quick Google
search will give some good answers.