Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Ruby

【Ruby】シンボルの書き方と使い方の基本

Ruby シンボル

動画で解説を見る



開発環境

  • Ruby version: ruby 3.1.2

Rubyのシンボルとは

Rubyのシンボルとは、任意の文字列と一対一に対応するシンボルクラスのオブジェクトです。

シンボルはソース上では文字列のように見えますが、Rubyの内部では「整数」として管理されているため、immutable (変更不可)なオブジェクトで同値ならば必ず同一となります。

公式リファレンス:https://docs.ruby-lang.org/ja/latest/class/Symbol.html

Rubyのシンボルの書き方

Rubyのシンボルの書き方をご紹介します。

文字列は「'(シングルクォート)」、または「"(ダブルクォート)」で囲みますが、シンボルは「:(コロン)」から始まります。

Rubyのシンボルの使い方

Rubyのシンボルのよくあるパターンをサンプルコードを用いて使い方の解説をしていきます。

配列でシンボルを使うパターン

配列でシンボルを使うパターンです。

取り出される値はそれぞれstringクラスとsymbolクラスになります。

ハッシュでシンボルを使うパターン

ハッシュでシンボルを使うパターンです。

ハッシュのキーにstringクラスを使用している場合、値を取り出すときのキー指定もstringクラスを使用します。

ハッシュのキーに前置コロンのsymbolクラスを使用している場合、値を取り出すときのキー指定も前置コロンのsymbolクラスを使用します。

ハッシュのキーに後置コロンを使用した場合は「=>(ダブルアロー)」を省略して記述しますが、値を取り出すときのキー指定は前置コロンのsymbolクラスを使用します。

Rubyのシンボルと文字列の違い

Rubyのシンボルと文字列の違いは大きく4つあります。

シンボルと文字列のクラスの違い

シンボルはSymbolクラスとなり、文字列はStringクラスとなります。

シンボルと文字列の破壊的な変更の違い

文字列は破壊的な変更は可能ですが、シンボルは破壊的な変更は不可能です。

シンボルと文字列のオブジェクトの違い

シンボルは同じ内容であれば必ず同一オブジェクトとなりますが、文字列は同じ内容であっても同一のオブジェクトにはなりません。

シンボルは同一のオブジェクトになるため、メモリの使用効率が良いということになります。

シンボルと文字列の処理速度の違い

シンボルは内部で整数として管理されるため、文字列と比べて高速に処理できます。

上記はobj1とobj2を比較する処理にシンボルを使った場合と文字列を使った場合のメソッドです。

そして、下記が実行結果です。

文字列よりシンボルのほうが処理速度が速いことがわかったかと思います。

おわりに

Rubyのシンボルの使い方を解説してきました。

シンボルはsymbolクラス、文字列はstringクラスになるため、オブジェクトのクラスが異なれば使用できるメソッドも違います。

特に連想配列であるハッシュでは必ずと言ってよいほどシンボルを使用するため、最低でも前置コロンと後置コロンの使い方は知っておきましょう。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Ruby