私はRuby 2.3を使用しており、Hash のメソッドを持っています。したがって、v2.3より前に深いネスティングで大きなハッシュがあれば、多くのメソッドを使用する必要があります[]
。この場合の例Ruby Hashメソッドの相違点:[] VS:dig
hashy = { a: { b: { c: { d: 1 }}}}
d_val = hashy[:a][:b][:c][:d] # => 1
それは
a_val = hashy[:a] # => { b: { c: { d: 1 }}}
b_val = a_val[:b] # => { c: { d: 1 }}
c_val = b_val[:c] # => { d: 1 }
d_val = c_val[:d] # => 1
と同じだが、何のRuby 2.3からに関するので、各メソッドの呼び出しは、新しいメモリの場所を割り当てます。
hashy.dig(:a, :b, :c, :d) # => 1
このメソッドはC言語で書かれています。別の方法でメモリを追加する必要はありません。
どちらを使用するのが好ましいですか?この場合
JFYIの両方のメソッドは、C –
Ahem ...で実装されています。https://github.com/rubinius/rubinius/blob/master/core/hash.rb#L534-L541 https://github.com/rubinius /rubinius/blob/master/core/hash.rb#L394-L403 –