Rubyにはシンボルがありますが、ほぼ文字列ど同じだし、なんのためにあるの???ってずっと思ってました。
そこで色々と勉強していくうちにシンボルの存在理由がわかったので、ここにまとめてみようと思います。
シンボルは文字列より処理が早く、数字よりも読みやすい
結論から言ってしまうと、
ハッシュのキーとしてシンボルを使う理由は、
文字列より処理が早く、数字よりも読みやすいからです。
ハッシュのキーは、文字列でもいいしハッシュでもいい。なんなら数字でもいい
そもそもですが、ハッシュのキーはシンボル以外でも全く問題なく動きます。
文字列でもいいですし、数字でもいいです。もちろんシンボルでもいいです。
以下ではハッシュのキーとして、
文字列、数字、シンボルを比較して説明していきます。
シンボルの方が文字列よりも処理が早い理由
簡単にいうと、
シンボルはメモリ番地が変わらないのに対し、
文字列はメモリ番地が毎回変わるからです。
文字列はメモリ番地が変わるので、文字列を探すためのコストがかかります。
それに対しシンボルはメモリ番地は変わりません。
シンボルでは探すコストがかからないので、文字列よりも早く処理ができます。
"メモリ番地が変わらない"という点で言えば、数字とシンボルは似ています。
シンボルは数字と文字列のいいとこ取りをしているとも言えますね。
シンボルの方が数字よりも読みやすい理由
流れ的に章を分けましたが、これは自明ですね。
キーに数字を使うなら配列でいいじゃんって話です。
まとめ
ハッシュのキーとしてシンボルを使う理由は、
文字列より処理が早く、数字よりも読みやすいから。
シンボルは数字のようにメモリ番地が変わらないので、文字列よりも処理が早い
シンボルは数字と文字列のいいとこ取り
以上の3つを抑えてからはシンボルの存在意義を問うことはくなりました。
シンボルで悩める人の参考になれば幸いです。