ハッシュキーとして文字列を使用する場合、Rubyはその文字列を評価し、内容を見て(ハッシュ関数を計算して)ハッシュにすでに格納されているキーの値をハッシュします。RailsはSymbolとStringをparamsハッシュのキーとして使用します
ハッシュキーとしてシンボルを使用すると、それは不変であるという暗黙のため、Rubyは基本的にobject-idのハッシュ関数とキーのハッシュされたオブジェクトIDの比較を行います。既にハッシュに格納されています。 (はるかに高速)。
は、しかし、事は、我々はparams[:some_key]
を書く場合には'some_key'
から:some_key
を変換し、それはparamsハッシュ内のキーを探すためにしようと、HashWithIndifferentAccess
のインスタンスであるRailsのparams
です。 line 159
def convert_key(key)
key.kind_of?(Symbol) ? key.to_s : key
end
検索はハッシュでキーに文字列で遅いのであれば、なぜHashWithIndifferentAccess
は、文字列に記号キーを変換しません。
これはありがとうございます! –