如何迭代哈希数组并将值返回到单个字符串中?

对不起,如果这很明显,我只是没有得到它。 如果我有一系列哈希像:

people = [{:name => "Bob", :occupation=> "Builder"}, {:name => "Jim", :occupation => "Coder"}] 

我想迭代数组并输出字符串,如:“Bob:Builder”。 我该怎么办? 我理解如何迭代,但我仍然有点迷失。 现在,我有:

 people.each do |person| person.each do |k,v| puts "#{v}" end end 

我的问题是我不明白如何返回两个值,只分别返回每个值。 我错过了什么?

谢谢您的帮助。

干得好:

 puts people.collect { |p| "#{p[:name]}: #{p[:occupation]}" } 

要么:

 people.each do |person| puts "#{person[:name]}: #{person[:occupation]}" end 

在回答关于访问数组中元素中的值的更一般的查询时,您需要知道people是一个哈希数组。 哈希有一个keys方法和values方法,分别返回键和值。 考虑到这一点,更通用的解决方案可能如下所示:

 people.each do |person| puts person.values.join(': ') end 

也会工作:

 people.each do |person| person.each do |key,value| print key == :name ? "#{value} : " : "#{value}\n" end end 

输出:

 Bob : Builder Jim : Coder