我正在解析 JSON 数据,并且在很多数据上我必须调用一些方法。有时数据是“nil”,如果我不检查 nil,如果调用方法会引发错误。
我现在正在做的是创建一个变量,检查 nil,然后在调用它的方法后最终将它分配给我的哈希。这是一个例子:
lat = event['location']['lat']
lng = event['location']['lng']
popularity = event['popularity']
ar_show.lat = lat.round(4) if lat
ar_show.lng = lng.round(4) if lng
ar_show.popularity = popularity.round(4) if popularity
有没有“更好”或更优雅的方式来做到这一点?目前我这样做的方式似乎非常多余,只是为了避免在 nil 上调用方法而创建一个额外的变量。我可以做这个:
ar_show.lat = event['location']['lat'].round(4) if event['location']['lat']
但这更糟!
也许这对我来说很奇怪的原因是我花了很多时间编写 Objective-C 并且我可以懒惰因为向“nil”发送消息很好而且你可以避免大量的 nil 检查,但是也正因为如此,有时也会把自己搞砸。
更新:
我刚刚在一个使用to_f
强制的语句中找到了一种方法:
ar_show.lat = event['location']['lat'].to_f.round(4)
to_f
在 nil 上会成功0.0
,处理 nil 情况,并避免额外的变量或语句。我只是想知道在将其输入代码之前是否有不利之处?