检查nil警告意外的零
我有以下检查nil:
client = !deal['deal']['party']['party'].nil? ? deal['deal']['party']['party']['company_id'] : ""
但我仍然得到:
当你没想到它时,你有一个零对象! 您可能期望ActiveRecord :: Base的实例。 在评估nil时发生错误。[]
我怎么能阻止这个?
我不认识Ruby,但我认为在.nil之前出错了:
deal['deal']['party']['party'] ^ ^ ^
箭头表示可能的零指数。 例如,如果[“deal”]为零或第一个[“party”]为零,该怎么办?
你可能想看看andand
游戏:
通过检查!deal.nil?
!deal['deal'].nil?
!deal['deal']['party'].nil?
!deal['deal']['party']['party'].nil?
在每个步骤中,您可以使用NilClass
构建的适当方法从nil中转义(如果它是数组,字符串或数字)。 只需将to_hash
添加到此列表的清单中即可使用它。
class NilClass; def to_hash; {} end end client = deal['deal'].to_hash['party'].to_hash['party'].to_hash['company_id'].to_s
你也可以这样做:
client = deal.fetch('deal', {}).fecth('party', {}).fetch('party', {}).fetch('company_id', '')