61 votes

Quelle est la différence entre la carte, chaque, et de recueillir?

En Ruby, il n'existe aucune différence entre les fonctionnalités d' each, map, et collect?

116voto

Chowlett Points 19889

each est différent de map et collect, mais map et collect sont les mêmes (techniquement map est un alias pour collect, mais dans mon expérience, map est utilisé beaucoup plus fréquemment).

each effectue le joint de bloc pour chaque élément dans l' (Enumerable) récepteur:

[1,2,3,4].each {|n| puts n*2}
# Outputs:
# 2
# 4
# 6
# 8

map et collect produire un nouveau Array contenant les résultats du bloc appliquée à chaque élément du récepteur:

[1,2,3,4].map {|n| n*2}
# => [2,4,6,8]

Il y a aussi map! / collect! défini sur Arrays; ils modifient le récepteur en place:

a = [1,2,3,4]
a.map {|n| n*2} # => [2,4,6,8]
puts a.inspect  # prints: "[1,2,3,4]"
a.map! {|n| n+1}
puts a.inspect  # prints: "[2,3,4,5]"

23voto

RubyMiner Points 89

Each permettra d'évaluer le bloc mais jette le résultat d' Each bloc de l'évaluation et retourne le tableau d'origine.

irb(main):> [1,2,3].each {|x| x*2}
=> [1, 2, 3]

Map/collect retourner un tableau construit comme le résultat de l'appel du bloc pour chaque élément du tableau.

irb(main):> [1,2,3].collect {|x| x*2}
=> [2, 4, 6]

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X