为什么我的Ruby方法返回一个数组而不是字符串?

时间:2019-07-04 18:43:12

标签: arrays ruby

我有一个关于Ruby返回值的问题,这使我感到困惑。

我编写了一个方法,该方法将数组作为参数并将其格式化为列表,如下所示:


    def list(array)
        array.each { |name, age| puts name + " is #{age} years old" }
    end

假设数组为[["Amy", 6], ["Tabitha", 5], ["Marcus", 9]]

我希望此列表方法返回do / end块中的字符串,而不返回数组。但是,返回值始终是一个数组。

我尝试将块分配给变量并返回该变量,但是它不起作用。我还尝试用return替换puts,但是在第一次迭代后退出该方法。似乎无法解决问题所在?

很抱歉,如果这是一个非常愚蠢的问题-我以前从未遇到过。

非常感谢任何输入,谢谢! :)

2 个答案:

答案 0 :(得分:6)

您想要map,而不是eachmapeach相似,只是它返回每个块评估的结果。 each返回原始数组。 另外,您的主要错误是puts 显示控制台中的某些内容,

您的最终代码为:

def list(array)
    array.map { |name, age| "#{name} is #{age} years old" }
end

答案 1 :(得分:0)

列表each的返回值。该函数返回该列表,因为它是最后一个可返回的指令。您需要通过以下方式使用map方法:

def how_old(people)
  people.map { |name, age| "#{name} is #{age} years old" }
end