Array
とHash
については、という新しいメソッドが導入されています。私は新しいリリースに関するブログ記事で見てきた例は不自然と複雑です:Ruby 2.3で導入された `Array#dig`と` Hash#dig`はどうやって使うのですか?
# Hash#dig
user = {
user: {
address: {
street1: '123 Main street'
}
}
}
user.dig(:user, :address, :street1) # => '123 Main street'
# Array#dig
results = [[[1, 2, 3]]]
results.dig(0, 0, 0) # => 1
私はトリプルネストされたフラットな配列を使用していませんよ。これがどのように役立つのか現実的な例は何ですか?
UPDATE
それは結局のところ、これらの方法は、最も一般的に尋ねたRubyの質問のいずれかを解きます。以下の質問はを使用することによって解決されているすべてのそれらの20個の重複、のようなものを持っている:
How to avoid NoMethodError for missing elements in nested hashes, without repeated nil checks?
Ruby Style: How to check whether a nested hash element exists
あなただけのいくつかのJSONを解析され、非常に現実的な例... – ndn
です@ ndn通常の 'user [:user] [:address] [:street1]'は 'user.dig(:user、:address、:street1)'より少ない文字で、同じ結果を与えます。 –
@JesseSielaff彼らは同じではありません。キーのいずれかが存在しない場合、 '[] [] []'はエラーで失敗します。 'dig'は失敗しません。' nil'を返します。 – meagar