我有一个关于 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
,而不是each
。 map
类似于 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/