建立符號

建立 Symbol 物件的最常用方法是在字串識別符號前面新增冒號:

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

以下是一些定義 Symbol 的替代方法,結合 String 文字:

:"a_symbol"
"a_symbol".to_sym

符號還有一個%s 序列,支援任意分隔符,類似於%q%Q 對字串的工作方式:

%s(a_symbol)
%s{a_symbol}

%s 對於從包含空格的輸入建立符號特別有用:

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

雖然可以使用某些字串識別符號建立一些有趣的符號(:/:[]:^等),但請注意,無法使用數字識別符號建立符號:

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

符號可以以單個 ?! 結尾,而無需使用字串文字作為符號的識別符號:

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

請注意,所有這些建立符號的不同方法都將返回相同的物件:

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

從 Ruby 2.0 開始,有一個從單詞建立符號陣列的快捷方式:

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