硬编码Ruby Enumerable#reduce-我有两种方法,但只有一种有效。为什么?

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

我是新手,作为练习,我必须对将数组作为参数的方法进行硬编码,如果该数组中的所有元素都是真实的,则返回true。如果不是,则为false。

def reduce_to_all_true(array)
  array.each do |index|
    if !index
      return false
    end
  return true
  end
end

如果ANY元素为true,则返回true ...

同时,以下内容:

def reduce_to_all_true(array)
  array.length.times { |index|
    if !array[index]
      return false
    end }
  return true
end

表现符合预期。我无法解决的原因是什么?以我公认的有限理解,它们是等效的解决方案。有人可以帮我理解吗?谢谢!

ruby each reduce
1个回答
0
投票

在第一种方法中,return true#each循环内,因此它将仅检查第一个元素并返回true或false。在第二个循环中,它在循环之后,因此只有在循环完全结束时它才返回true。

© www.soinside.com 2019 - 2024. All rights reserved.