3

次のようなハッシュを使用している人がいます。

end_points = { "dev" => "http://example.com"}

そしてこれを使用する他の場所で:

 end_points = { :dev => "http://example.com"}

これら2つのアプローチの違いは何ですか?

4

3 に答える 3

3

""文字列を宣言します。シンボル:を宣言します。ハッシュを使用していて、キーの値を変更したり、キーの値を保持したりする必要がない場合は、記号を使用します。

より詳細な説明については、これをチェックしてください。

于 2012-09-19T21:55:20.700 に答える
2

:devはシンボルで'dev'あり、は文字列です。

ほとんどの場合、記号が使用されますが、どちらも正しいです。いくつかは主題について読んだ:

シンボルとは何ですか?どのように使用しますか?

Rubyでシンボルをハッシュキーとして使用するのはなぜですか?

于 2012-09-19T21:55:29.793 に答える
2

最初のケースでは文字列を使用し、2番目のケースではシンボルを使用します。シンボルはRubyの特定のタイプです。プログラム全体では、symbolのインスタンスは1つだけですが、stringはそれを多数持つことができます。つまり

> :sym.__id__
=> 321608
> :sym.__id__
=> 321608
> "sym".__id__
=> 17029680
> "sym".__id__
=> 17130280

ご覧のとおり、シンボルは常に同じIDを持っています。つまり、シンボルは常に同じオブジェクトですが、文字列は常に新しいメモリの場所に新しい文字列があります。これが、シンボルがハッシュキーとしてより一般的である理由であり、単純に高速です。

于 2012-09-19T21:57:18.060 に答える