我使用reject
和return
以下两种方法。
方法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
)?
答案 0 :(得分:2)
您正在第一个方法中使用return
语句,以便在v.even?
条件为真时它将从循环中退出。这就是为什么它只返回2
。
在第二种方法中,您的循环将检查每个元素,并在v.even?
条件为true
时返回所有元素。
答案 1 :(得分:0)
此处无需新方法
[1, 2, 3, 4].select{|e|e.even?}
allready做你想要的,可以用其他方法链接。