使用`each`方法替换数组

时间:2015-11-18 22:56:14

标签: arrays ruby

我已经获得了一个分配,将每个数字放在一个数组中,将其平方,并使用each方法返回它(特别是collectmap或{{1 }})。我的代码如下,

inject

但这只返回一个数字,而不是数组中的def square_array(array) array.each do |number| new_number = number ** 2 new_array = [] new_array.push (new_number) return new_array end end 个数字。有关如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:3)

你的代码不起作用的原因是每次循环到array中的数字时,你创建一个新数组,将数字的平方加到你的新数组中,然后返回你的函数!这里有两个问题。首先,您需要在each array之前创建新数组。其次,在你遍历array中的所有数字之前,不要退出你的功能是很重要的。在当前函数中,您将只遍历array的第一个元素,然后返回square_array函数。

def square_array(array)
  new_array = []  
  array.each { |number| new_array << number ** 2 } # Shorthand syntax for a do-block
  new_array # Return keyword is not necessary in the last line of a method
end

答案 1 :(得分:1)

def square_array(array)
  array.each_with_object([]) do |number, new_array|
    new_array << number ** 2
  end
end