0
1

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.

シンボルのススメ

Last updated at Posted at 2019-09-17

#目次

  1. はじめに
  2. シンボルとは
  3. シンボルのメリット
  4. シンボルの注意点
  5. 参考にしたwebサイト

#はじめに
私は、プログラミングをの勉強を初めてまだ2ヶ月の初心者であります。自分のアウトプットも兼ねてまだまだ技術は未熟ではありますが、私以外の初めて間もない方々の役に立つようなことができればと思いまして、投稿をさせていただきます。不備等ございましたら、恐れ入りますがコメントにてご指摘いただければ幸いでございます。

#シンボルとは
文字列の前(後に置くこともできます)にコロン記号":"を書くことで定義されるオブジェクトです。
シンボルと比較されるものとして、文字列があります。
文字列と比較して、説明致します。

###中身は数値である
シンボル生成の際に振り分けられる数値(オブジェクトID)は一つの名前のシンボルに対して、1つです。これに対し文字列は、中身のオブジェクトを確認してみると毎回同じ文字列のものを定義していたとしても、毎回新たな数値のオブジェクトを生成します。同じ名前のシンボル、文字列を2つづつ生成し、2つのオブジェクトの数値を確認すると違いがわかります。さらにこの部分がシンボルの利点につながっていきます。

string1 = "kintarou"
string2 = "kintarou"
string1.object_id                #70290363282580
string2.object_id                #70290363219840

--------------------

string1 = :kintarou
string2 = :kintarou
string1.object_id                #10278748
string2.object_id                #10278748

#シンボルのメリット
3つに分けて説明していきます。
###メモリ消費が少ない
先程の通り同じオブジェクトとして参照されるので、毎回異なるオブジェクトを参照する文字列オブジェクトに比べ、メモリ消費が少なくなります。

###処理が高速になる
メモリ消費が少なくなることと同じ理由で、文字列に比べ処理が高速になります。

###読みやすい、わかりやすい
可読性が上がるという表現がよく使われます。つまりは読みやすい、ぱっと見ただけで理解しやすく、誤解されにくいということです。

#シンボルの注意点
シンボルの名前に関して、"-"使うとエラーになってしまいます。必要な場合は"_"を利用するとエラーが出ることなく定義できます。ただし、こういった記述をすることで、-を使うことは可能です。

:'kin-tarou'

この際、定義したハッシュを呼び出す際もがクオーテーション('')が必要となりますので、注意が必要です。

#参考にしたwebサイト
【Ruby入門】コロン記号の意味とシンボルのやさしいまとめ!
Rubyの文字列とシンボルの違いをキッチリ説明できる人になりたい
Rubyのハッシュとシンボル
Rubyのややこしい配列とハッシュとシンボルについて整理してみた
Rails チュートリアル
配列とハッシュとシンボルは紛らわしいので整理!!
[Ruby]シンボルとは
Rubyで便利なシンボルとは?使い方とメリットを解説

0
1
2

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?