我遇到以下数组迭代的问题。我想创建一个带有“food”和“drink”的数组jt
,这可以从第一个命令的输出中看出,该命令是从每个标签有两个global_tags
的项构造的有一个短语,在这种情况下,是food
或drink
。我不知道为什么我会在最后一行看到两个嵌入式数组。
1.9.3p392 :043 > m.global_tags.map { |t| puts t.tag.phrase }
drink
food
=> [nil, nil]
1.9.3p392 :044 > jt=[]
=> []
1.9.3p392 :045 > m.global_tags.map { |t| jt << t.tag.phrase }
=> [["drink", "food"], ["drink", "food"]]
1.9.3p392 :046 >
另外,我正在尝试缩短语法。这似乎有效但不确定这在Ruby术语中是否被认为是丑陋的(?)
1.9.3p392 :050 > m.global_tags.map(&:tag).map(&:phrase)
=> ["drink", "food"]
寻求帮助
答案 0 :(得分:2)
.map
的返回值,它不是jt
。如果您只需要副作用,请使用.each
m.global_tags.map { |t| t.tag.phrase }
会返回您想要的结果。