分享 被我遗忘的 Hash#dig

kikyous · January 09, 2017 · Last by hiveer replied at January 13, 2017 · 3456 hits

为了在 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 数据用起来很爽

哎呀妈呀 不错

a&.b&.c&.d

简单明了实用的小分享 👍

You need to Sign in before reply, if you don't have an account, please Sign up first.