Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Symbolクラス
クラスの継承リスト: Symbol < Object < Kernel
シンボルを表すクラス。シンボルは任意の文字列と一対一に対応するオブジェクトです。
文字列の代わりに用いることもできますが、必ずしも文字列と同じ振る舞いをするわけではありません。 同じ内容のシンボルはかならず同一のオブジェクトです。
シンボルオブジェクトは以下のようなリテラルで得られます。
:symbol :'symbol' %s!symbol! # %記法
生成されたシンボルの一覧は Symbol.all_symbols で得られます。 一番目のリテラルでシンボルを表す場合、`:' の後に は識別子、メソッド名(`!',`?',`=' などの接尾辞を含む)、変数名 (`$'などの接頭辞を含む)、再定義できる演算子のいずれかに適合する ものしか書くことはできません(そうでなければ文法エラーになります)。 そうでない文字列をシンボルにしたい場合は残りの表記か String#intern を使用してください。
Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前'を整数で管理しています。これは名前を直接文字列として処理するよりも 速度面で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボルです。
シンボルは、ソース上では文字列のように見え、内部では整数として扱われる、両者を仲立ちするような存在です。
名前を管理するという役割上、シンボルと文字列は一対一に対応します。 また、文字列と違い、immutable (変更不可)であり、同値ならば必ず同一です。
p "abc" == "abc" #=> true p "abc".equal?("abc") #=> false p :abc == :abc #=> true p :abc.equal?(:abc) #=> true ←同値ならば同一
実用面では、シンボルは文字の意味を明確にします。`名前'を指し示す時など、 文字列そのものが必要なわけではない時に用います。
シンボルを使うメリットは
大抵のメソッドはシンボルの代わりに文字列を引数として渡すこともできるようになっています。
定義 | 説明 | |
---|---|---|
all_symbols -> [Symbol]
|
定義済みの全てのシンボルオブジェクトの配列を返します。 |
定義 | 説明 | |
---|---|---|
id2name -> String
|
シンボルに対応する文字列を返します。 |
|
inspect -> String
|
自身を人間に読みやすい文字列にして返します。 |
|
to_i -> Integer
|
シンボルに対応する整数を返します。 |
|
to_proc -> Proc
|
self に対応する Proc オブジェクトを返します。 |
|
to_sym -> self
|
self を返します。 |
==
===
=~
__id__
__send__
_dump
class
clone
display
enum_for
eql?
equal?
extend
freeze
frozen?
hash
initialize
initialize_copy
instance_eval
instance_exec
instance_of?
instance_variable_defined?
instance_variable_get
instance_variable_set
instance_variables
is_a?
marshal_dump
marshal_load
method
method_missing
methods
nil?
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
private_methods
protected_methods
public_methods
remove_instance_variable
respond_to?
singleton_method_added
singleton_method_removed
singleton_method_undefined
singleton_methods
taint
tainted?
tap
to_a
to_ary
to_hash
to_io
to_regexp
to_str
to_yaml
to_yaml_properties
to_yaml_style
untaint
.new
定義 | 説明 | ライブラリ |
---|---|---|
dclone
|
rexml |