パンくず
Ruby Cookbook
ハッシュキーにシンボルを利用
概要
ハッシュキーにシンボルを利用
内容
以下の構文でシンボルを利用可能です。
:hoge 'hoge'.intern
シンボルについて
Rubyマニュアルより
Rubyの内部実装では、メソッド名や変数名、定数名、クラス名など の`名前'を整数で管理しています。 これは名前を直接文字列として処理するよりも 速度面で有利だからです。 そしてその整数をRubyのコード上で表現したものがシンボルです。 シンボルは、ソース上では文字列のように見え、 内部では整数として扱われる、両者を仲立ちするような存在です。
メリット
新しく文字列を生成しない分やや効率がよく、比較も高速。 文字の意味がはっきりするのでコードが読みやすくなる immutable なので内容を書き換えられる心配がない
サンプル
require "pp" people = Hash.new people[:hoge] = 'hoge' people['hoge'] = 'hoge' print people[:hoge],",",people['hoge'],"\n" p :nickname.object_id p :nickname.object_id # => 同一のオブジェクトIDを差す p 'nickname'.intern.object_id # => 同一のオブジェクトIDを差す p 'nickname'.object_id p 'nickname'.object_id # => 異なるのオブジェクトIDを差す
出力
hoge,hoge 173288 173288 173288 20360256 20359500