Symbol型とは

 Rubyのオブジェクトにシンボル型オブジェクトがある。「:」をつけるやつだ。

 これがキー名の指定とかでよく使う。このシンボル型とは何かを自分のものとするためにまとめる。

 オブジェクトには型がある。文字列オブジェクトはString型。数字オブジェクトはInteger型。シンボルオブジェクトはSymbol型。などである。

 パソコンは全ての情報を数字で解釈している。だから、文字情報も実は数字に変換されて認識されている。

 

 例えば、"name"というString型の文字データを数字化するとどうなるのか(””で囲めば文字列となる)

 

●文字型

 

f:id:kc-masui:20190609181839p:plain

  このように数字として認識されていることがわかる。

 さて、もう一度別の変数として"name"を定義して数字化してみよう。

 

 

f:id:kc-masui:20190609182041p:plain

 さきほどと末尾のほうで数字が変わっている。このように文字オブジェクトは同じ内容でもそれぞれ異なる数字として認識されている。

 別々のオブジェクトとして処理をする分、多く演算処理が行われるので情報処理が重くなる。

 

●シンボル型

 さて、シンボル型の話である。シンボル型は文字型と違って、同じ文字列ならば、同じ数字で認識される。

 

f:id:kc-masui:20190609192653p:plain

 同じ数字として認識している。

 シンボル型は、同じ内容のオブジェクト()sym2が生成された場合、以前のオブジェクト(sym1)の情報を参照して利用する。変数とかを定義するたびに新たに生成する文字列とはそこが違う。

 いくつも数字情報を生成しないので、メモリが少なくて済む。

 

 これらのことから、処理を軽量化するためにシンボル型を活用するとよい。特に、文字列情報である必要がない、ハッシュのキー名やメソッドの引数などでは必ず使うようにしよう。