差图,并且每个[重复]之间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了差图,并且每个[重复]之间相关的知识,希望对你有一定的参考价值。
可能重复: Ruby - What is the difference between map, each and collect?
我在Ruby的文档也看了,但我无法理解的区别
map
each
iterators.It将是巨大的,如果你能举一个例子,解释。
each
简单地在给定的迭代可枚举,运行的每个值的块。它丢弃块的返回值,每一只返回它被称为原始对象:
[1, 2, 3].each do |x|
x + 1
end # => [1, 2, 3]
这是简单地做一个传统的迭代for
循环的一个更好的,更普遍的方式,并each
大大优于for
中的循环红宝石(其实,我不认为我曾经用在Ruby for
循环)。
map
然而,遍历每个元素,使用所述块的返回值来填充每个相应索引处的新数组并返回该新的数组:
[1, 2, 3].map do |x|
x + 1
end # => [2, 3, 4]
所以“映射”的每个元素使用给定的块一个新的,因此命名为“地图”。需要注意的是既不each
也不map
自己修改原来的集合。这是为了创建一个数组并推到它在迭代循环的简明,功能性的替代方案。
each
返回原来的对象。它用来收集没有任何结果的运行使用阵列的每个元件的操作。例如,如果要打印数字的列表,你可以做这样的事情:
arr = [1, 2, 3, 4]
arr.each { |n| puts n }
现在,上面puts
方法实际上返回nil
。有些人不知道,但它没有多大意义呢;有没有真正的理由来收集值(如果你想arr
转换为字符串,你应该使用arr.map(&:to_s)
或arr.map { |n| n.to_s }
。
map
返回您传递给它的块的结果。它是运行在一个阵列中的每个元素上的操作和检索结果的好方法。如果你想多一个数组的每一个元素是2,这是自然的选择。作为奖励,你可以使用map!
修改原来的对象。例如:
arr = [1, 2, 3, 4]
arr.map! { |n| n * 2}
# => [2, 4, 6, 8]
以上是关于差图,并且每个[重复]之间的主要内容,如果未能解决你的问题,请参考以下文章