我有这个哈希数组...
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] }
有人可以向我解释一下吗?谢谢!
答案 0 :(得分:3)
这一行没有做任何事情,因为你丢掉了它的返回值:
people.map { |x| x[:name] }
它也与后续两行无关。
如果要生成名称列表,则使用该行并丢弃最后两行,但存储要返回的名称数组:
names = people.map { |x| x[:name] }
这就是你所需要的一切。迭代数组people
,使用块中的返回值构建一个新数组。从本质上讲,它确实完成了你的最后两行所做的事情,但是在一条简洁的界限中。
这两个片段在功能上是相同的,但彼此无关。你需要选择一个或另一个:
names = people.map { |x| x[:name] }
或
names = []
people.each { |x| names << x[:name] }
答案 1 :(得分:0)
只是您必须访问哈希键的值的方式。
hash = {name:&#34; manu&#34;}
为了从你需要做的哈希中获取manu
hash[:name]
名称可以是您想要的关键