Ruby:return vs puts

时间:2016-07-17 07:33:49

标签: ruby return

我使用rejectreturn以下两种方法。

方法1:

puts

方法2:

def method array
    array.each do |n|
      v = n * n
      return n if v.even?
    end
end

puts method [1, 2, 3, 4] #=> 2

是什么让第一个方法返回满足条件的第一个项目(def method array array.each do |n| v = n * n puts n if v.even? end end method [1, 2, 3, 4] #=> 2, 4 ),而不是返回第二个项目(2)?

2 个答案:

答案 0 :(得分:2)

您正在第一个方法中使用return语句,以便在v.even?条件为真时它将从循环中退出。这就是为什么它只返回2

在第二种方法中,您的循环将检查每个元素,并在v.even?条件为true时返回所有元素。

答案 1 :(得分:0)

此处无需新方法

[1, 2, 3, 4].select{|e|e.even?}

allready做你想要的,可以用其他方法链接。