Class: Symbol

Inherits:
Object show all
Defined in:
object.c,
object.c

Overview


<code>Symbol</code> objects represent names and some strings
inside the Ruby
interpreter. They are generated using the <code>:name</code> and
<code>:"string"</code> literals
syntax, and by the various <code>to_sym</code> methods. The same
<code>Symbol</code> object will be created for a given name or string
for the duration of a program's execution, regardless of the context
or meaning of that name. Thus if <code>Fred</code> is a constant in
one context, a method in another, and a class in a third, the
<code>Symbol</code> <code>:Fred</code> will be the same object in
all three contexts.

 module One
   class Fred
   end
   $f1 = :Fred
 end
 module Two
   Fred = 1
   $f2 = :Fred
 end
 def Fred()
 end
 $f3 = :Fred
 $f1.id   #=> 2514190
 $f2.id   #=> 2514190
 $f3.id   #=> 2514190

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.all_symbolsObject

Instance Method Details

#==(other) ⇒ Boolean #equal?(other) ⇒ Boolean #eql?(other) ⇒ Boolean

Equality---At the Object level, == returns true only if obj and other are the same object. Typically, this method is overridden in descendent classes to provide class-specific meaning.

Unlike ==, the equal? method should never be overridden by subclasses: it is used to determine object identity (that is, a.equal?(b) iff a is the same object as b).

The eql? method returns true if obj and anObject have the same value. Used by Hash to test members for equality. For objects of class Object, eql? is synonymous with ==. Subclasses normally continue this tradition, but there are exceptions. Numeric types, for example, perform type conversion across ==, but not across eql?, so:

1 == 1.0     #=> true
1.eql? 1.0   #=> false

Overloads:

  • #==(other) ⇒ Boolean

    Returns:

    • (Boolean)
  • #equal?(other) ⇒ Boolean

    Returns:

    • (Boolean)
  • #eql?(other) ⇒ Boolean

    Returns:

    • (Boolean)


93
94
95
# File 'object.c', line 93

static VALUE
rb_obj_equal(obj1, obj2)
VALUE obj1, obj2;

#id2nameString #to_sString

Returns the name or string corresponding to sym.

:fred.id2name   #=> "fred"

Overloads:



1189
1190
1191
# File 'object.c', line 1189

static VALUE
sym_to_s(sym)
VALUE sym;

#inspectString

Returns the representation of sym as a symbol literal.

:fred.inspect   #=> ":fred"

Returns:



1158
1159
1160
# File 'object.c', line 1158

static VALUE
sym_inspect(sym)
VALUE sym;

#to_iFixnum

Returns an integer that is unique for each symbol within a particular execution of a program.

:fred.to_i           #=> 9809
"fred".to_sym.to_i   #=> 9809

Returns:



1128
1129
1130
# File 'object.c', line 1128

static VALUE
sym_to_i(sym)
VALUE sym;

#to_intObject

:nodoc:



1140
1141
1142
# File 'object.c', line 1140

static VALUE
sym_to_int(sym)
VALUE sym;

#to_procObject

Returns a Proc object which respond to the given method by sym.

(1..3).collect(&:to_s)  #=> ["1", "2", "3"]


1238
1239
1240
1241
1242
# File 'object.c', line 1238

static VALUE
sym_to_proc(VALUE sym)
{
    return rb_proc_new(sym_call, (VALUE)SYM2ID(sym));
}

#id2nameString #to_sString

Returns the name or string corresponding to sym.

:fred.id2name   #=> "fred"

Overloads:



1189
1190
1191
# File 'object.c', line 1189

static VALUE
sym_to_s(sym)
VALUE sym;

#to_symObject

In general, to_sym returns the Symbol corresponding to an object. As sym is already a symbol, self is returned in this case.



1206
1207
1208
# File 'object.c', line 1206

static VALUE
sym_to_sym(sym)
VALUE sym;