Ruby シンボルの簡単な使い方

  • 作成日 2020.12.28
  • 更新日 2022.08.18
  • Ruby
Ruby シンボルの簡単な使い方

Rubyで、シンボルの簡単な使い方を記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

シンボル使い方

シンボル名は、名前の前にコロン(:)を記述することで Symbol型を定義できます。

str = "mebee"
sym = :mebee

p str.class
# String
p sym.class
# Symbol

例えば、文字列を定義した場合は、異なるオブジェクトとなりますが、

str1 = "mebee"
str2 = "mebee"

# 同じオブジェクトかどうか

p str1.equal? str2
# false

# オブジェクトIDを確認

p str1.object_id
# 60
p str2.object_id
# 80

シンボルの場合は、同じオブジェクトとなります。

sym1 = :mebee
sym2 = :mebee

# 同じオブジェクトかどうか

p sym1.equal? sym2
# true

# オブジェクトIDを確認

p sym1.object_id
# 1068828
p sym2.object_id
# 1068828

ハッシュ作成

シンボルは、よく、ただのデータの名前であるハッシュのキーとして使用されます。

h1 = { "name" => "honda", "age" => 10 }
h2 = { :name => "honda", :age => 10 }

p h1
# {"name"=>"honda", "age"=>10}

p h1["name"]
# "honda"

p h2
# {:name==>"honda", :age=>10}

p h2[:name]
# "honda"

シンボルをハッシュに使用する場合は、以下のように記述することも可能です。

h3 = { name: "honda", age: 10 }

p h3
# {:name=>"honda", :age=>10}

p h3[:name]
# "honda"

シンボルで、キー名を定義すると、文字列で定義する場合に比べ、パフォーマンスが上がります。

【参考】 上記のコードを、それぞれ1億回実行した結果

                 user     system      total        real
#string     12.704000   0.000000  12.704000 ( 12.706575)
#symbol     10.421000   0.000000  10.421000 ( 10.435728)

また、シンボルをハッシュのキーに使用するとユニークキーなるためコードの安全性を保てます。

更に、見やすくなり可読性もあがります。

p h1
# {"name"=>"honda", "age"=>10}

p h2
# {:name==>"honda", :age=>10}