我已经获得了一个分配,将每个数字放在一个数组中,将其平方,并使用each
方法返回它(特别是collect
,map
或{{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
个数字。有关如何做到这一点的任何想法?
答案 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