[RAILS] Traitement itératif de Ruby en utilisant chaque méthode (trouver la somme de 1 à 10)

environnement

![Capture d'écran 2020-08-31 15.49.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694973/7de31e7d-4555-29a3-20ac -21aa281f02fc.png)

Le modèle de réponse

sum = 0

10.times do |i|
  sum = sum + i + 1
end

Ma réponse

sum = 0
numbers = [1,2,3,4,5,6,7,8,9,10]
numbers.each do |n|
  sum += n
end

Commentaire

J'utilise la méthode each pour les calculs itératifs sur le tableau, tandis que la réponse du modèle utilise la méthode des temps. Le point commun est que la valeur somme est définie en dehors du bloc, et le traitement à effectuer pour cette somme est décrit dans le bloc de faire à la fin. Mais tout écrire de 1 à 10 n'est pas intelligent. Il existe un objet de plage qui représente une plage de valeurs consécutives telles que «1 à 10». Créez un objet de plage en utilisant ... ou .. comme ceci:

Objet Range

1 ... 10 (dont 10) 1..10 (sans compter 10) Vous pouvez utiliser la méthode to_a sur cet objet range pour créer un tableau contigu de valeurs

méthode to_a

![Capture d'écran 2020-08-31 16.24.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/694973/da10d3d6-3cdf-7c2b-17f5 -93c9b25ea192.png) Vous disposez désormais d'un tableau continu jusqu'à 10! Vous pouvez également créer un tableau de la même manière en utilisant * et un objet range dans []. C'est ce qu'on appelle l'expansion splat. Ce sera comme suit. スクリーンショット 2020-08-31 16.29.32.png

Si vous rassemblez ce qui précède et faites à nouveau la réponse de l'exemple, ce sera comme suit

sum = 0
numbers = [*1..10]
numbers.each do |n|
  sum += n
end

J'ai pu le rendre beaucoup plus propre depuis le début! Vous pouvez également le rendre encore plus compact en utilisant la méthode each directement sur l'objet range. En même temps, au lieu d'utiliser do ... end comme notation de bloc, nous utiliserons {}.

sum = 0
 (1..10).each{ |n| sum += n  }

Résumé

Présentation de la façon de rendre le calcul itératif compact en utilisant l'objet range et la méthode to_a dans chaque méthode. En ce qui concerne la programmation, non seulement la réponse est donnée, mais ce n'est pas facile à comprendre pour le spectateur et il est plus facile d'écrire du code là-bas. Je voudrais continuer à produire en sachant combien il est facile d'écrire du code!

Les références

Introduction à Ruby pour les professionnels Des spécifications linguistiques aux techniques de développement / débogage pilotées par les tests Software Design et version Kindle Junichi Ito () https://www.amazon.co.jp/dp/B077Q8BXHC/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1

Recommended Posts

Traitement itératif de Ruby en utilisant chaque méthode (trouver la somme de 1 à 10)
[Ruby] Des bases à la méthode inject
Comment trouver la cause de l'erreur Ruby
[Android, Java] Méthode pour trouver la date écoulée à partir de deux dates
Trouvez la différence à partir d'un multiple de 10
[Ruby / Refactoring] Du traitement itératif Ruby tel que Java et C au traitement itératif de type Ruby
Comment insérer un traitement avec n'importe quel nombre d'éléments dans le traitement itératif dans Ruby
Comment faire fonctionner IGV en utilisant la communication par socket, et l'histoire de la création d'un Ruby Gem en utilisant cette méthode
Sortie de la somme de chaque nom et de son contenu à partir du tableau multiple
[Promotion de la compréhension de Ruby (1)] Lorsque vous passez de Java à Ruby, commencez par comprendre la différence.
L'histoire de l'introduction de la communication Ajax à Ruby
Sortie de la façon d'utiliser la méthode slice
[Ruby] Code pour afficher le jour
Processus itératif Ruby
[JDBC ③] J'ai essayé d'entrer à partir de la méthode principale en utilisant des espaces réservés et des arguments.
Comment démarrer un indice à partir d'un nombre arbitraire dans le traitement itératif Ruby
[Introduction à Ruby] Comment utiliser la méthode slice
[Ruby] Découpez une chaîne de caractères à l'aide de la méthode slice
De l'introduction de la conception à la création de la table des utilisateurs
Comment écrire Scala du point de vue de Java
Je veux appeler la méthode principale en utilisant la réflexion
Utilisez-vous correctement la méthode par défaut de l'interface?
Essayez d'utiliser l'attribut de requête Ruby on Rails
Somme de Java_1 à 100
définition de la méthode ruby
De Java à Ruby !!
[Ruby] Prenez l'habitude d'utiliser la méthode dup lors de la copie d'une variable chaîne
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
[Ruby] Comptez un nombre pair dans un tableau en utilisant la méthode pair?
[Ruby] Questions et vérification du nombre d'arguments de méthode
[Ruby] Trouvez une séquence de 0 à 9 à grande vitesse.
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
J'ai brièvement résumé la grammaire de base de Ruby
[Ruby] Comment récupérer le contenu du double hachage
L'histoire de la transmission de Java à Heroku à l'aide du pipeline BitBucket
[Ruby] Je souhaite inverser l'ordre de la table de hachage
[Apache Tomcat] L'histoire de l'utilisation d'Apache OpenWebBeans pour activer CDI
[Java débutant] Conversion d'une chaîne de caractères en valeur numérique - Quelle est la méthode parseInt de la classe Integer? ~
Essayez d'utiliser Cocoa de Ruby
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
[Java] Essayez de résoudre le problème de Fizz Buzz en utilisant un traitement récursif
Je veux comprendre le flux des paramètres de demande de traitement Spring
[Rubiy] J'ai essayé de résumer le traitement de la boucle ce soir [fois, pause ...]
Comment obtenir le contenu de la carte à l'aide du mémorandum d'instructions
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Méthode pour additionner le nombre d'années et obtenir la fin du mois