Jea*_*ash 22 ruby null operators
在Groovy中,有一个很好的语法来处理null值.
例如,我可以做一个if语句:
if (obj1?.obj2?.value) {
}
Run Code Online (Sandbox Code Playgroud)
即使obj1为null(它将评估为false),也不会抛出NullPointerException.
这是非常方便的,所以想知道我是否错过了Ruby等价物.
Ism*_*reu 23
在rails应用程序中有 Object#try
所以你可以做到
obj1.try(:obj2).try(:value)
Run Code Online (Sandbox Code Playgroud)
或者用一个块(如下面的评论所述)
obj.try {|obj| obj.value}
Run Code Online (Sandbox Code Playgroud)
UPDATE
在ruby 2.3中有运算符:
obj&.value&.foo
Run Code Online (Sandbox Code Playgroud)
哪个是一样的 obj && obj.value && obj.value.foo