【发布时间】:2013-06-01 10:45:00
【问题描述】:
给定:
array = {first: {second: {one: 1, two: 2, three: 3 }}}
假设任何东西都可以是nil,那么访问嵌套值而不被 nil 绊倒的最简单/最简洁的方法是什么?如果任何成员不存在,它应该只返回nil。
我们想出了这些:
纯红宝石:
value = array.fetch(:first, {}).fetch(:second, {}).fetch(:four, nil)
value = begin array[:first][:second][:four]; rescue; end
Ruby on Rails:
value = array.try(:[], :first).try(:[], :second).try(:[], :four)
你能想到什么?您更喜欢哪种方法,为什么?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby