分享 被我遗忘的 Hash#dig

kikyous · 2017年01月09日 · 最后由 hiveer 回复于 2017年01月13日 · 2613 次阅读

为了在 value 处取得 params[:q][:title_cont]

<input name='q[title_or_key_cont]' type="text" value='<%= params[:q][:title_cont] %>' >

这样在 params[:q] 为 nil 时会报错, 曾经一直这么写:

params[:q] && params[:q][:title_cont]

还可以用 try 改进:

params[:q].try(:[], :name_cont)

现在有更厉害的方法了: ruby 2.3 中引入的 Hash#dig

于是只需要:

params.dig(:q, :title_cont)

👏

然而……2.1.5……

#1 楼 @torvaldsdb 活可以不干,ruby 不能不升级😅

ruby 233.....

厉害了

不错,Array 也可以用

a = [[1, [2, 3]]]

a.dig(0, 1, 1)                    #=> 3

特别是写 API wrapper 的时候,挖 json 数据用起来很爽

哎呀妈呀 不错

#2 楼 @ruby_sky 卡卡还是 2.1.5

a&.b&.c&.d

简单明了实用的小分享 👍

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册