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

jue*_*ra7 1 ruby arrays

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

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


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

Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

col*_*nux 6

你要的map不是eachmap类似于each,不同之处在于它返回每个块评估的结果。each返回原始数组。另外,您的主要错误是在控制台中puts 显示某些内容,而没有其他内容。

您的最终代码为:

def list(array)
    array.map { |name, age| "#{name} is #{age} years old" }
end
Run Code Online (Sandbox Code Playgroud)