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

标签 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 block 中的字符串,而不是返回数组。但是,返回值始终是一个数组。

我试过将 block 分配给一个变量并返回该变量,但它不起作用。我还尝试用 return 替换 puts 但在第一次迭代后退出该方法。似乎无法弄清楚问题是什么?

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

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

最佳答案

您需要map,而不是eachmap 类似于 each,只是它返回每个 block 评估的结果。 each 返回原始数组。 此外,您在这里的主要错误是 put display 在控制台中没有其他内容。

您的最终代码将是:

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

关于arrays - 为什么我的 Ruby 方法返回一个数组而不是字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56893010/

相关文章:

c++ - 指向对象数组中函数的指针数组

c - 了解返回值函数 C

javascript - array.push 后数组元素未定义

ruby - 如何在ruby中直接使用Slim

ruby - 我如何使用 Nokogiri 查找网页上的特定文本/单词?

ruby - 我如何将 '-t azure://' 目标传递到 ruby​​ inspec 脚本中?

php - 如何使用 php 对数组求和?

java - 按相同标准对两个 int[] 进行排序

ruby - 使用分布式缓存 - HIVE STREAMING

Ruby String#scan 相当于返回 MatchData