En Ruby, il n'existe aucune différence entre les fonctionnalités d' each
, map
, et collect
?
Réponses
Trop de publicités?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 Array
s; 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]"
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]