[RUBY] [Rubiy] Simplifiez chaque utilisation de la carte et injectez

La ** méthode à chaque ** est un processus itératif bien connu pour le rubis, mais chacune n'est pas toujours la meilleure.

Pour certains modèles, il peut être plus facile à implémenter en utilisant une méthode différente. Cette fois, je vais vous présenter comment écrire de manière simplifiée pour chaque motif.

Lors de la création d'un nouveau tableau avec différents éléments d'un tableau existant

Nous utiliserons la méthode map.

Modifications à l'aide d'opérateurs


#Pour chaque

list = (1..5).to_a
list_double = []

list.each do |i|
  list_doubule << i * 2
end

p list_double  # [2, 4, 6, 8, 10]

#Pour la carte

list = (1..5).to_a

list_double = list.map{ |i| i* 2 }

p list_double  # [2, 4, 6, 8, 10]

Modifications à l'aide des méthodes d'instance


#Pour chaque

array = ["a", "b", "c"]
array_up = []

array.each do |i|
  array_up << i.upcase
end

p array_up  # ["A", "B", "C"]

#Pour la carte

array = ["a", "b", "c"]

array_up = array.map(&:upcase)

p array_up  # ["A", "B", "C"]

.map{ |i| i.upcase }Est en outre omis

Lors du calcul de la somme des éléments (nombres) d'un tableau

Nous utiliserons la méthode ʻinject (valeur initiale) `.


#Pour chaque

list = (1..5).to_a
sum = 0

list.each do |i|
  sum += i
end

p sum  # 15

#En cas d'injection

list = (1..5).to_a

sum = list.inject(0){|i, j| i += j}

p sum  # 15

Recommended Posts

[Rubiy] Simplifiez chaque utilisation de la carte et injectez
Écrire du code à l'aide de classes et d'instances Ruby
[Ruby] chacun imbriqué
Programme Janken utilisant Ruby et son test (test-unit)
Rubis et gemme
méthode de la carte rubis
[Chacun, carte ...] J'ai comparé le traitement du tableau ce soir [ruby]
[Ruby] Classes et instances
Symboles et rubis destructeur
map, compactMap et flatMap
[Ruby] Big Decimal et DECIMAL
Classes et instances Ruby
Héritage et délégation Ruby
hash et chaque instruction
[Ruby on Rails] Défilement infini à l'aide de gem kaminari et jscroll