Ruby 取数是否有哈希为零的检查?

Ruby 取数是否有哈希为零的检查?,ruby,hash,fetch,null,Ruby,Hash,Fetch,Null,我正在使用facebook graph api并获取签入密钥。大多数地方都有此签入密钥,但偶尔我会发现一个没有签入的地方没有此密钥。有没有办法检查nil并防止下面的代码破坏我的大型rake graph.get_object(5811874893).fetch("checkins") KeyError: key not found: "checkins" x = graph.get_object(x.place_id)["checkins"] 根据下面的反馈,我有以下错误,与相同的主题:零

我正在使用facebook graph api并获取签入密钥。大多数地方都有此签入密钥,但偶尔我会发现一个没有签入的地方没有此密钥。有没有办法检查nil并防止下面的代码破坏我的大型rake

graph.get_object(5811874893).fetch("checkins")
KeyError: key not found: "checkins"


x =  graph.get_object(x.place_id)["checkins"]
根据下面的反馈,我有以下错误,与相同的主题:零检查。你会怎么处理

nil can't be coerced into Fixnum

您是否尝试过查看
是否有\u键?
可用,或者使用
图形。获取对象(5811874893)[“签入”]
而不是
图形。获取对象(5811874893)。获取(“签入”)

要在没有签入时返回0,请执行以下操作

graph.get_object(5811874893).fetch("checkins") { 0 }
fetch
后面的块指定了如果
签入“
不存在该怎么办。

为什么不直接执行

graph.get_object(5811874893)["checkins"]

如果您使用
[]
访问哈希,则不会引发错误,并且您将得到一个nil值(只要哈希没有设置为其他值)。

此操作有效,但返回nil。有没有一种方法可以检查nil,如果有,则返回零?这是可行的,但当我只需要一个api调用时,它会导致两个api调用。有更好的方法吗?@JZ:检查我的答案的新版本。你实际上不需要在这里设置块,你可以将它作为第二个参数传递给foo.fetch(“checkins”,0)