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
Objectlevel,==returnstrueonly 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_symreturns theSymbolcorresponding 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
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
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; |