如何访问数组数组深处的元素而不出现“未定义方法”错误

Mic*_*win 4 ruby hash hash-of-hashes

当尝试访问数组数组深处的元素时,如果元素不存在,避免出现错误“undefined method `[]” for nil:NilClass”的最佳方法是什么?

例如,我目前正在这样做,但对我来说似乎很糟糕:

if @foursquare['response']['groups'][0].present? && @foursquare['response']['groups'][0]['items'].present?
Run Code Online (Sandbox Code Playgroud)

use*_*951 5

Ruby 2.3.0 引入了一种在两者上调用的新方法digHashArray可以与新的安全导航运算符 ( &.) 结合使用来解决您的问题。

@foursquare.dig('response', 'groups')&.first&.dig('items')
Run Code Online (Sandbox Code Playgroud)

nil如果任何级别缺少值,都会返回该值。