建立符號
建立 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]