62241


ruby 初心者で  
ruby にはシンボルと文字列があるみたいなんですが  
使い分けがよくわかりません

どういう場面でどっちを使うべきみたいなセオリーってあるんでしょうか  
Rails で FORM から受け取った値はすべて文字列なので  
迷ったら文字列だけを使うようにしとけばいいのかなと思ったんですが  
それで困ることってあるでしょうか


CC BY-SA 4.0
2019-12-24T13:59:50.680
61740
2020-02-22T05:01:30.140
question
ruby-on-rails ruby
シンボルと文字列どっちを使うべきですか？


<https://docs.ruby-lang.org/ja/latest/class/Symbol.html> より、

>
> Rubyの内部実装では、メソッド名や変数名、定数名、クラス名などの`名前'を整数で管理しています。これは名前を直接文字列として処理するよりも速度面で有利だからです。そしてその整数をRubyのコード上で表現したものがシンボルです。  
>  シンボルは、ソース上では文字列のように見え、内部では整数として扱われる、両者を仲立ちするような存在です。

シンボルは、 ruby インタプリタが内部に持っている識別子を、プログラム上から扱えるようにしたものです。  
識別子であるので、その主な用途である `==` による等値比較を繰り返し行うことに対して、最適化された実装になっています。

ですので、実際にプログラマがシンボルをデータとして扱う際には、その等値比較くりかえすであろう Hash
のキーとして、使われる場合が多いかなと思っています。(なので、メソッドのオプションをまとめて Hash
で受け取っているような場合に、そのキーにはシンボルが使われる場合がほとんどだと思います。)

またセオリーでいうと、ユーザーからの入力結果として得られる文字列は、シンボルとしては扱わない場合が多いと思います。シンボルはあくまで、「プログラマのための、プログラムを整理するための識別子」であって、「データを表す文字列」としては設計されていないため、入力結果をシンボル化するようなコードは、筋が良い処理になりにくい、のがその理由だと思います。


CC BY-SA 4.0
2020-01-14T12:38:58.033
62241
2020-01-14T12:38:58.033
754
61740
answer