On this page
End of Life Ruby 3.1 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
Symbol
Symbol objects represent named identifiers inside the Ruby interpreter.
You can create a Symbol object explicitly with:
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 end $f1 = :Fred end module Two Fred = 1 $f2 = :Fred end def Fred() end $f3 = :Fred $f1.object_id #=> 2514190 $f2.object_id #=> 2514190 $f3.object_id #=> 2514190
Constant, method, and variable names are returned as symbols:
module One Two = 2 def three; 3 end @four = 4 @@five = 5 $six = 6 end seven = 7 One.constants # => [:Two] One.instance_methods(true) # => [:three] One.instance_variables # => [:@four] One.class_variables # => [:@@five] global_variables.grep(/six/) # => [:$six] local_variables # => [:seven]
Symbol objects are different from String objects in that Symbol objects represent identifiers, while String objects represent text or data.
What’s Here
First, what’s elsewhere. Class Symbol:
-
Inherits from class Object.
-
Includes module Comparable.
Here, class Symbol provides methods that are useful for:
Methods for Querying
::all_symbols-
Returns an array of the symbols currently in Ruby’s symbol table.
empty?-
Returns
trueifself.lengthis zero;falseotherwise.
end_with?-
Returns
trueif symbol ends with any of the given strings.
start_with?-
Returns
trueif symbol starts with any of the given strings.
Methods for Comparing
- #<=>
-
Returns -1, 0, or 1 as a given symbol is smaller than, equal to, or larger than symbol.
- #==, #===
-
Returns
trueif a given symbol has the same content and encoding.
casecmp-
Ignoring case, returns -1, 0, or 1 as a given symbol is smaller than, equal to, or larger than symbol.
casecmp?-
Returns
trueif symbol is equal to a given symbol after Unicode case folding;falseotherwise.
Methods for Converting
capitalize-
Returns symbol with the first character upcased and all other characters downcased.
downcase-
Returns symbol with all characters downcased.
inspect-
Returns the string representation of
selfas a symbol literal.
name-
Returns the frozen string corresponding to symbol.
swapcase-
Returns symbol with all upcase characters downcased and all downcase characters upcased.
upcase-
Returns symbol with all characters upcased.
Class methods 2
Instance methods 31
Ruby version changes 2
-
3.0
-
Symbol#to_procnow returns a lambdaProc. [Feature #16260] -
Symbol#namehas been added, which returns the name of the symbol if it is named. The returned string is frozen. [Feature #16150]
-