为什么。这里不起作用?

时间:2016-02-27 17:48:14

标签: ruby

["1", "2"].map { |x| x + "." }
#=> ["1.", "2."] 

["1", "2"].each { |x| x + "." }
#=> ["1", "2"] 

两种方法都对每个元素应用了一个块,我无法理解为什么each什么都不做

1 个答案:

答案 0 :(得分:3)

Array#each工作了。它只是迭代并在块内每次迭代产生一个元素。完成后,它会返回您调用它的对象["1", "2"].each {|x| p( x + "." ) } # "1." # "2." 。要看,每个人都被称为:

{{1}}

但是Array#map - 为self的每个元素调用给定的块一次。创建一个包含块返回值的新数组。