1

我在帮助程序中有以下代码:

arr = ['one', 'two', 'three']

errors = content_tag :ul do
  arr.map do |msg|
    content_tag :li, msg
  end.join.html_safe
end

它工作正常,但在第一个版本中我尝试each而不是map它没有工作。谁能解释我为什么?(each刚刚生成的版本<ul>onetwothree</ul>

4

1 回答 1

3

这是因为Array#each返回调用它的接收器本身。但是Array#map返回一个包含块返回值的新数组。

arr = ['one', 'two', 'three']

arr.each {|i|  i + 'weak' }.join(" ") # "one two three"
arr.map {|i|  i + 'weak' }.join(" ") #"oneweak twoweak threeweak"
于 2013-10-07T14:47:39.693 回答