[RAILS] [Ruby] Des bases à la méthode inject

méthode d'injection

Référence: https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/inject.html

Qu'est-ce que Enumerable en premier lieu?

module. Un mix-in pour répéter les cours. Voici des amis célèbres (méthodes d'instance).

Référence: https://docs.ruby-lang.org/ja/latest/class/Enumerable.html

Dans Ruby, grâce au module ʻEnumerable`, vous pouvez utiliser des méthodes avec un traitement itératif pratique.

Utilisation de base

ary = [1,2,3,4,5]
ary.inject(1){ |sum, n| sum + n }
# => 16

,,,Difficile à comprendre.

Rendons les choses faciles à comprendre.

ary = [1,2,3,4,5]
ary.inject(1) do |sum, n| 
  puts sum
  sum + n 
end
 
=begin
=>1 (valeur initiale spécifiée dans l'argument de inject"1"Entre la somme)
=>2 (valeur initiale (somme)+Somme du premier élément (n) du tableau)
=>4 (La valeur de retour (2) du processus précédent est en somme+Somme du deuxième élément)
=>7 (omis ci-dessous)
=>11
=>16 (valeur de retour globale)
=end

Pouvez-vous l'imaginer en quelque sorte? C'est ** pliage **.

En passant, si l'argument de méthode (partie hoge de ʻinject (hoge)`) est omis, le premier élément du tableau est mis à la valeur initiale.

ary = [1,2,3,4,5]
ary.inject do |sum, n| 
  puts sum
  sum + n 
end
 
=begin
=>1 
=>3 
=>6 
=>10 
=>15 (valeur de retour globale)
=end

Ce qui me rend heureux

Avec une bonne compréhension, vous pouvez rédiger des processus complexes d'une manière facile à comprendre. Puisque le traitement à l'intérieur du bloc peut être répété par convolution, il peut être écrit plus court que la méthode ʻeach`.

En d'autres termes, il est souvent utilisé pour la refactorisation itérative.

Écrivons un code pratique ci-dessous.

Utilisation réelle

Obtenez la somme des séquences

Pour chaque

sum = 0
ary = [100,200,300,42,52]
ary.each { |n| sum += n }
puts sum
# =>694

En cas d'injection

ary = [100,200,300,42,52]
sum = ary.inject { |s, n| s += n }
puts sum
# =>694

Une ligne a diminué. Rafraîchissant.

Recommended Posts

[Ruby] Des bases à la méthode inject
[Introduction à Ruby] Comment utiliser la méthode slice
Comment utiliser la méthode Ruby inject
De Java à Ruby !!
Traitement itératif de Ruby en utilisant chaque méthode (trouver la somme de 1 à 10)
Algorithme Ruby (injection, définition de méthode)
Comment utiliser la méthode form_with
[Ruby] Méthode pour compter des caractères spécifiques
[Bases de Ruby] méthode split et méthode to_s
J'ai essayé d'expliquer la méthode
Introduction à Ruby (à partir d'autres langues)
La route de JavaScript à Java
Bases de Ruby
[Android, Java] Méthode pour trouver la date écoulée à partir de deux dates
Facile à comprendre la différence entre la méthode d'instance Ruby et la méthode de classe.
[Challenge CircleCI from 0] Apprenez les bases de CircleCI
Examinez le remplacement de Docker vers Podman.
[Rails] Comment utiliser la méthode de la carte
[Java] Comment utiliser la méthode toString ()
Je voulais ajouter @VisibleForTesting à la méthode
J'étais accro à la méthode du rouleau
Extraire des caractères de la méthode de tranche de chaîne Ruby
Comment trouver la cause de l'erreur Ruby
[Ruby] Résumé des définitions de classe. Maîtrisez les bases.
Méthode Ruby to_s
Mémorandum pour nettoyer le code Ruby
[procédure de déploiement heroku ③] De la spécification de la version de Ruby au déploiement et accès à l'application (terminé)
Migration d'Eclipse vers IntelliJ (en cours)
Méthode de recherche
[Ruby] Comment utiliser la méthode gsub et la sous-méthode
L'histoire de l'introduction de la communication Ajax à Ruby
Un jeune ingénieur a appris JUnit à partir des bases
[Ruby] Je veux faire un saut de méthode!
Bases de Ruby
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Sortie de la façon d'utiliser la méthode slice
À propos de la méthode
[Ruby] Code pour afficher le jour
[Notions de base sur Ruby] J'ai essayé d'apprendre des modules (Chapitre 1)
Comment utiliser la méthode replace () (Java Silver)
[Rubiy] Je veux créer un tableau à partir d'une chaîne de caractères avec la méthode split. Et vice versa.
Lisez la documentation officielle de Dagger2 pour comprendre les bases
[Ruby] méthode d'initialisation
Méthode de construction Ruby