Symbol objects represent names and some strings inside the Ruby interpreter. They are generated using the :name and :"string" literals syntax, and by the various to_sym methods. The same Symbol 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 Fred is a constant in one context, a method in another, and a class in a third, the Symbol :Fred will be the same object in all three contexts.

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

Class Methods

Returns an array of all the symbols currently in Ruby's symbol table.

Symbol.all_symbols.size    #=> 903
Symbol.all_symbols[1,20]   #=> [:floor, :ARGV, :Binding, :symlink,
                                :chown, :EOFError, :$;, :String,
                                :LOCK_SH, :"setuid?", :$<,
                                :default_proc, :compact, :extend,
                                :Tms, :getwd, :$=, :ThreadGroup,
                                :wait2, :$>]

Deserializes JSON string by converting the string value stored in the object to a Symbol

Instance Methods

Compares symbol with other_symbol after calling to_s on each of the symbols. Returns -1, 0, +1, or nil depending on whether symbol is less than, equal to, or greater than other_symbol.

nil is returned if the two values are incomparable.

See String#<=> for more information.

Equality—If sym and obj are exactly the same symbol, returns true.

An alias for ==

Returns sym.to_s =~ obj.

Returns sym.to_s[].

Returns a hash, that will be turned into a JSON object and represent this object.

Same as sym.to_s.capitalize.intern.

Case-insensitive version of Symbol#<=>. Currently, case-insensitivity only works on characters A-Z/a-z, not all of Unicode. This is different from Symbol#casecmp?.

:aBcDeF.casecmp(:abcde)     #=> 1
:aBcDeF.casecmp(:abcdef)    #=> 0
:aBcDeF.casecmp(:abcdefg)   #=> -1
:abcdef.casecmp(:ABCDEF)    #=> 0

nil is returned if the two symbols have incompatible encodings, or if other_symbol is not a symbol.

:foo.casecmp(2)   #=> nil
"\u{e4 f6 fc}".encode("ISO-8859-1").to_sym.casecmp(:"\u{c4 d6 dc}")   #=> nil

Returns true if sym and other_symbol are equal after Unicode case folding, false if they are not equal.

:aBcDeF.casecmp?(:abcde)     #=> false
:aBcDeF.casecmp?(:abcdef)    #=> true
:aBcDeF.casecmp?(:abcdefg)   #=> false
:abcdef.casecmp?(:ABCDEF)    #=> true
:"\u{e4 f6 fc}".casecmp?(:"\u{c4 d6 dc}")   #=> true

nil is returned if the two symbols have incompatible encodings, or if other_symbol is not a symbol.

:foo.casecmp?(2)   #=> nil
"\u{e4 f6 fc}".encode("ISO-8859-1").to_sym.casecmp?(:"\u{c4 d6 dc}")   #=> nil

provides a unified clone operation, for REXML::XPathParser to use across multiple Object types

Same as sym.to_s.downcase.intern.

Returns whether sym is :“” or not.

Returns the Encoding object that represents the encoding of sym.

Returns the representation of sym as a symbol literal.

:fred.inspect   #=> ":fred"

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

Same as sym.to_s.length.

Returns sym.to_s.match.

Returns sym.to_s.match?.

An alias for succ

Same as sym.to_s.succ.intern.

Same as sym.to_s.swapcase.intern.

Stores class name (Symbol) with String representation of Symbol as a JSON string.

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

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

Returns the name or string corresponding to sym.

:fred.id2name   #=> "fred"
:ginger.to_s    #=> "ginger"

Same as sym.to_s.upcase.intern.