分享 被我遗忘的 Hash#dig

kikyous · 发布于 2017年1月09日 · 最后由 hiveer 回复于 2017年1月13日 · 938 次阅读
2564

为了在 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)

👏

共收到 15 条回复
19780

然而……2.1.5……

2564

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

4257

ruby 233.....

18791

厉害了

96

不错,Array也可以用

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

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

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

23224

哎呀妈呀 不错

19780

#2楼 @ruby_sky 卡卡还是2.1.5

14099

a&.b&.c&.d

6829

简单明了实用的小分享 👍

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