質問: ruby 初心者で ruby にはシンボルと文字列があるみたいなんですが 使い分けがよくわかりません どういう場面でどっちを使うべきみたいなセオリーってあるんでしょうか Rails で FORM から受け取った値はすべて文字列なので 迷ったら文字列だけを使うようにしとけばいいのかなと思ったんですが それで困ることってあるでしょうか
回答: より、 > > Rubyの内部実装では、メソッド名や変数名、定数名、クラス名などの`名前'を整数で管理しています。これは名前を直接文字列として処理するよりも速度面で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボルです。 > > シンボルは、ソース上では文字列のように見え、内部では整数として扱われる、両者を仲立ちするような存在です。 > > > シンボルは、 ruby インタプリタが内部に持っている識別子を、プログラム上から扱えるようにしたものです。 識別子であるので、その主な用途である `==` による等値比較を繰り返し行うことに対して、最適化された実装になっています。 ですので、実際にプログラマがシンボルをデータとして扱う際には、その等値比較くりかえすであろう Hash のキーとして、使われる場合が多いかなと思っています。(なので、メソッドのオプションをまとめて Hash で受け取っているような場合に、そのキーにはシンボルが使われる場合がほとんどだと思います。) またセオリーでいうと、ユーザーからの入力結果として得られる文字列は、シンボルとしては扱わない場合が多いと思います。シンボルはあくまで、「プログラマのための、プログラムを整理するための識別子」であって、「データを表す文字列」としては設計されていないため、入力結果をシンボル化するようなコードは、筋が良い処理になりにくい、のがその理由だと思います。