首页 > 代码库 > HASH的dig方法判断key是否存在及是否有值
HASH的dig方法判断key是否存在及是否有值
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是否存在及是否有值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。