Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在数组内的哈希上迭代_Ruby_Arrays_Hash - Fatal编程技术网

Ruby 在数组内的哈希上迭代

Ruby 在数组内的哈希上迭代,ruby,arrays,hash,Ruby,Arrays,Hash,我有这个散列数组 people = [ {:name => "Nick", :age => 28}, {:name => "John", :age => 29}, {:name => "Lisa", :age => 25}, {:name => "Brynn", :age => 24} ] 我想用以下代码打印出每个人的姓名: people.map { |x| x[:name] } names = [] people.each { |x| name

我有这个散列数组

people = [
{:name => "Nick", :age => 28},
{:name => "John", :age => 29},
{:name => "Lisa", :age => 25},
{:name => "Brynn", :age => 24}
]
我想用以下代码打印出每个人的姓名:

people.map { |x| x[:name] }
names = []
people.each { |x| names << x[:name]}

有人能给我解释一下吗?谢谢

此行没有任何作用,因为您正在丢弃它的返回值:

people.map { |x| x[:name] }
它也与后面的两行无关

如果要生成名称列表,请使用该行并丢弃最后两行,但存储要返回的名称数组:

names = people.map { |x| x[:name] }
这就是你所需要的。它在数组
people
上迭代,使用块的返回值构建一个新数组。本质上,它与前两行完全相同,但在一行中是干净的

这两个片段在功能上相同,但彼此无关。您需要选择一个或另一个:

names = people.map { |x| x[:name] }

names=[]

每个{x | names就是访问哈希键值的方式

哈希={name:“manu”}

为了从散列中得到manu,你必须

hash[:name]
其中name可以是您想要的密钥

names = []
people.each { |x| names << x[:name] }
hash[:name]