Ruby Language Symbols Creating a Symbol

Help us to keep this website almost Ad Free! It takes only 10 seconds of your time:
> Step 1: Go view our video on YouTube: EF Core Bulk Extensions
> Step 2: And Like the video. BONUS: You can also share it!


The most common way to create a Symbol object is by prefixing the string identifier with a colon:

:a_symbol       # => :a_symbol
:a_symbol.class # => Symbol

Here are some alternative ways to define a Symbol, in combination with a String literal:


Symbols also have a %s sequence that supports arbitrary delimiters similar to how %q and %Q work for strings:


The %s is particularly useful to create a symbol from an input that contains white space:

%s{a symbol} # => :"a symbol"

While some interesting symbols (:/, :[], :^, etc.) can be created with certain string identifiers, note that symbols cannot be created using a numeric identifier:

:1 # => syntax error, unexpected tINTEGER, ...
:0.3 # => syntax error, unexpected tFLOAT, ...

Symbols may end with a single ? or ! without needing to use a string literal as the symbol's identifier:

:hello?  # :"hello?" is not necessary.
:world!  # :"world!" is not necessary.

Note that all of these different methods of creating symbols will return the same object:

:symbol.object_id == "symbol".to_sym.object_id
:symbol.object_id == %s{symbol}.object_id

Since Ruby 2.0 there is a shortcut for creating an array of symbols from words:

%i(numerator denominator) == [:numerator, :denominator]

Got any Ruby Language Question?