是否有Hash nil检查获取?

时间:2011-05-17 23:41:37

标签: ruby hash fetch null

我正在使用facebook graph-api,我正在拿取签到密钥。大多数地方都有这个签到密钥,但每隔一段时间我就找到一个没有签到密钥的地方。有没有办法检查nil并防止以下代码炸毁我的大耙子?

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

2 个答案:

答案 0 :(得分:2)

您是否尝试过查看has_key?是否可用,或使用graph.get_object(5811874893)["checkins"]而不是graph.get_object(5811874893).fetch("checkins")

如果没有签到,则返回0,执行

graph.get_object(5811874893).fetch("checkins") { 0 }

fetch之后的块指定在"checkins"不存在时该怎么做。

答案 1 :(得分:1)

你为什么不这样做

graph.get_object(5811874893)["checkins"]

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