码迷,mamicode.com
首页 > 其他好文 > 详细

HASH的dig方法判断key是否存在及是否有值

时间:2017-01-22 12:02:12      阅读:262      评论:0      收藏:0      [点我收藏+]

标签:object   key   erro   any   2.4   extra   blog   end   idt   

 

dig(key, ...) → objectclick to toggle source

Extracts the nested value specified by the sequence of idx objects by calling dig at each step, returning nil if any intermediate step is nil.

 

http://ruby-doc.org/core-2.4.0/Hash.html#method-i-dig

h = { foo: {bar: {baz: 1}}}

h.dig(:foo, :bar, :baz)           #=> 1
h.dig(:foo, :zot, :xyz)           #=> nil

g = { foo: [10, 11, 12] }
g.dig(:foo, 1)                    #=> 11
g.dig(:foo, 1, 0)                 #=> TypeError: Integer does not have #dig method
g.dig(:foo, :bar)                 #=> TypeError: no implicit conversion of Symbol into Integer

 

 

举例子:

 

            if item["ui_type"]["pos"].present?
              display_item.x_axis = item["ui_type"]["pos"]["x"] if item["ui_type"]["pos"]["x"].present?
              display_item.y_axis = item["ui_type"]["pos"]["y"] if item["ui_type"]["pos"]["y"].present?
              display_item.width = item["ui_type"]["pos"]["w"]  if item["ui_type"]["pos"]["w"].present?
              display_item.height = item["ui_type"]["pos"]["h"] if item["ui_type"]["pos"]["h"].present?
            end

 

改为

            display_item.x_axis = item["ui_type"]["pos"]["x"] if item.dig("ui_type", "pos", "x").present?
            display_item.y_axis = item["ui_type"]["pos"]["y"] if item.dig("ui_type", "pos", "y").present?
            display_item.width = item["ui_type"]["pos"]["w"]  if item.dig("ui_type", "pos", "w").present?
            display_item.height = item["ui_type"]["pos"]["h"] if item.dig("ui_type", "pos", "h").present?

 

HASH的dig方法判断key是否存在及是否有值

标签:object   key   erro   any   2.4   extra   blog   end   idt   

原文地址:http://www.cnblogs.com/iwangzheng/p/6339733.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!