Ruby:map和inject之间的区别

kry*_*tah 5 ruby

在这里阅读关于SO的各种解释,它们被描述为:


地图:

map方法采用可枚举对象和块,并为每个元素运行块


注入:

Inject接受一个值和一个块,它为列表的每个元素运行该块一次.

希望你明白为什么我觉得它们在表面看起来非常相似.我何时会选择一个而不是另一个,它们之间有什么明显的区别吗?

Mic*_*ohl 12

如果你认为它inject也有别名,它会有所帮助reduce.map用于转换列表,例如将数组中的所有字符串转换为大写,而inject接受一个参数(通常是累加器)并修改它.

例子:

 %w(a b c).map(&:upcase) #=> ["A", "B", "C"]
 [*1..4].inject(:+) #=> 10
Run Code Online (Sandbox Code Playgroud)

如果你想阅读更多,那么inject所谓的折叠.