Ruby 2.3在Array
和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
我没有使用三层嵌套平面array.什么是一个现实的例子,说明这将是多么有用?
UPDATE
事实证明,这些方法解决了最常见的Ruby问题之一.下面的问题大约有20个副本,所有问题都可以用dig
个来解决:
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