这可能是一个比较表面的问题,但我觉得它真的很烦人,因为最终总是会出现一些丑陋的代码。而可读性始终很重要,对吧?
我想检查一个哈希内是否存在另一个哈希中的值。所以我做的就是这样。
already_exists_data[:data][:user_id]
但是如果:data为nil,那么我可能会得到一个nullpointer异常,而检查:data可能会给我一个nullpointer,如果already_exists_data为nil。所以我最终得到的是这个:
if already_exists_data && already_exists_data[:data] && already_exists_data[:data][:user_id]
# Do stuff
end
这是一些难看的代码。也许我应该将哈希修改为对象。但有时候我还是会遇到这个问题,想知道你们是如何解决它的。
我目前在使用Ruby编程,但我在其他多种语言中也遇到了类似的问题。