Ruby 怪癖:使用“return”获取 nil 值

问题描述 投票:0回答:1

我在 Rubymonk 遇到一个问题,我必须在执行操作之前测试数组是否为“nil”(添加到数组中的项目,但这与问题并不真正相关)。然而,我注意到,当我这样做时

ary.nil? ? nil : ary.map {|x,y=0| x + y }

代码可以工作,但如果我这样做的话

ary.nil? ? **return** nil : ary.map {|x,y=0| x + y }

事实并非如此。

但是,如果我这样做

if ary.nil?
   **return **nil
 else
   ary.map {|x,y=0| x + y }
 end

为什么“**return **nil”在一种情况下起作用,而在另一种情况下不起作用? (粗体仅用于强调全文)

我希望“回归”在这两种情况下都能发挥作用。

ruby null return-value
1个回答
0
投票

return
这样的表达没有多大意义。您可能希望在绘制地图之前显式返回:

def foo(ary) return nil if ary.nil? ary.map { |x| x + 1 } end
或者解决这个问题的更明智的方法是使用安全访问运算符,这将产生 

nil

 is 
ary
 is 
nil

ary&.map { |x| x + 1 }
    
© www.soinside.com 2019 - 2024. All rights reserved.