.?红宝石中的(存在)算子?

Raz*_*orm 2 ruby null

.?Ruby中是否有运算符在nil调用方法之前检查对象是否存在?

例如,如果我必须编码:

if person and person.neighbor and person.neighbor.house and person.neighbor.house.rooms
    person.neighbor.house.rooms.each do |room|
        blah
    end
end
Run Code Online (Sandbox Code Playgroud)

有没有比检查一切更好的方法?

并且请不要说"代码以这些对象不可能的方式nil",我从API调用获取这些东西并且无法控制它.

Mil*_*ica 6

从Ruby 2.3.0开始,&."安全导航"操作符就是这样做的.而不是

person and person.neighbor and person.neighbor.house and person.neighbor.house.rooms

你现在可以做到

person&.neighbor&.house&.rooms.

http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/