首页 > 解决方案 > 为什么我的 Ruby 方法返回一个数组而不是字符串?

问题描述

我有一个关于 Ruby 返回值的问题,这让我很困惑。

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


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

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

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

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

对不起,如果这是一个非常愚蠢的问题 - 我以前没有遇到过。

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

标签: arraysruby

解决方案


你想要map,没有eachmap就像each,除了它返回每个块评估的结果。each返回原始数组。此外,您的主要错误是在控制台中puts 显示某些内容,仅此而已。

您的最终代码将是:

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

推荐阅读