0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2020-12-12

ハッシュの書き方

Rubyのハッシュの書き方が3つ程あるのは最初に習うと思います。
なんで3つあるの?そもそもシンボルって?となったので文字列とシンボルの違いを見ていきます。そして自分は調べてシンボルで書く事に納得しました。

country = { 'japan' => 'Tokyo', 'usa' => 'washington'}
country = { :japan => 'Tokyo', :usa => 'washington'}
country = { japan: 'Tokyo', usa: 'washington'}

シンボルと文字列の特徴の違い

大きく分けて3つの違いがあります。
1,クラス
2,内部処理
3,オブジェクトID
4,ミュータブルかイミュターブル

クラス

'example'.class
 => String
:example.class
 => Symbol

内部処理

Rubyでは文字列は文字列として扱われます。ですが、シンボルは整数として管理されます。表面上文字列に見えますが、整数の為文字列より高速に処理されます。

オブジェクトID

同じオブジェクトを複数作ります。文字列はそれぞれ別のオブジェクトとして生成されますがシンボルは同じシンボルであれば同じオブジェクトとして扱われます。その為メモリの使用効率がシンボルの方が良くなります。

'example'.object_id => 70235159966100
'example'.object_id => 70332409696280
'example'.object_id => 70332409696200
:example.object_id => 1058268
:example.object_id => 1058268
:example.object_id => 1058268

ミュータブルかイミュターブル

ミュータブルとは変更可能という意味でミュータブルなオブジェクトは破壊的な変更ができると言う事
イミュータブルは変更出来ない事です。
文字列はミュータブルでシンボルはイミュターブルです。その為シンボルは破壊的な変更がされないように出来るということになります。

まとめ

シンボルのメリットとして
整数として扱われるので文字列より処理が速い
同じシンボルは同じとして扱われるのでメモリ効率が良い
イミュターブルな為破壊的な変更が出来ない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?