Class: Symbol
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
-
#=== ⇒ Object
Equality—At the
Object
level,==
returnstrue
only if obj and other are the same object. -
#id2name ⇒ Object
Returns the name or string corresponding to sym.
-
#inspect ⇒ String
Returns the representation of sym as a symbol literal.
-
#to_i ⇒ Fixnum
Returns an integer that is unique for each symbol within a particular execution of a program.
-
#to_int ⇒ Object
:nodoc:.
-
#to_proc ⇒ Object
Returns a Proc object which respond to the given method by sym.
-
#to_s ⇒ Object
Returns the name or string corresponding to sym.
-
#to_sym ⇒ Object
In general,
to_sym
returns theSymbol
corresponding to an object.
Class Method Details
.all_symbols ⇒ Object
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
<i>obj</i> and <i>anObject</i> 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
93 94 95 |
# File 'object.c', line 93 static VALUE rb_obj_equal(obj1, obj2) VALUE obj1, obj2; |
#id2name ⇒ String #to_s ⇒ String
Returns the name or string corresponding to sym.
:fred.id2name #=> "fred"
1189 1190 1191 |
# File 'object.c', line 1189 static VALUE sym_to_s(sym) VALUE sym; |
#inspect ⇒ String
Returns the representation of sym as a symbol literal.
:fred.inspect #=> ":fred"
1158 1159 1160 |
# File 'object.c', line 1158 static VALUE sym_inspect(sym) VALUE sym; |
#to_i ⇒ Fixnum
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
1128 1129 1130 |
# File 'object.c', line 1128 static VALUE sym_to_i(sym) VALUE sym; |
#to_int ⇒ Object
:nodoc:
1140 1141 1142 |
# File 'object.c', line 1140 static VALUE sym_to_int(sym) VALUE sym; |
#to_proc ⇒ Object
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));
}
|
#id2name ⇒ String #to_s ⇒ String
Returns the name or string corresponding to sym.
:fred.id2name #=> "fred"
1189 1190 1191 |
# File 'object.c', line 1189 static VALUE sym_to_s(sym) VALUE sym; |
#to_sym ⇒ Object
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; |