差图,并且每个[重复]之间

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]

以上是关于差图,并且每个[重复]之间的主要内容,如果未能解决你的问题,请参考以下文章

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

具有多个 backstack 的片段

4.3 合并重复的条件执行片段

如何在 Kotlin 片段内的按钮之间切换片段?

需要一种有效的方法来避免使用 Laravel 5 重复代码片段

播放随机声音而不重复