Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

書籍 Ruby Cookbook | ハッシュキーにシンボルを利用

パンくず

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