我尝试做的是创建一个名为Rspec
的{{1}} shared_example,用于检查对象的rails json响应,并验证某些属性是否已更新。 json响应可能有也可能没有嵌套属性。钥匙无法提前知道。
说我有一个哈希,update response
:
如果密钥深一层,我可以动态地向哈希发送密钥。
hsh = {one_deep: 123, nested: {a: 1, b: 2}}
如果我对方法链进行硬编码,我可以访问嵌套哈希:
def get_value(some_key)
hsh.send(:[], some_key)
end
get_value(:one_deep) # => 123
def get_value(some_key, another_key)
hsh.send(:[], some_key).send(:[], another_key)
end
get_value(:nested, :a) # => 1
get_value(:nested, :b) # => 2
答案 0 :(得分:2)
如果你正在使用Ruby 2.3.1,那么你可以使用#dig
方法从嵌套的Hash中获取密钥的值。
答案 1 :(得分:2)
对于2.3.1之前的Ruby版本,它很容易实现Hash#dig。
Dim CritArray(0 To 3) As String
CritArray(0) = "Tax"
CritArray(1) = "Accounting"
ActiveSheet.Range("$B$4:$H$12").AutoFilter Field:=3, Criteria1:=CritArray
如果class Hash
def dig(*keys)
keys.reduce(self) { |obj, k| obj && obj[k] }
end
end
为obj[k]
,则nil
将设为obj
并保持等于nil
。
试试吧。
nil