Qu'est-ce qu'un bloc ?
Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 15 sur 56.
Vous écrivez déjà des blocs. Chaque fois que vous avez écrit each do |x| ... end, la partie entre do et end était un bloc : un morceau de code transmis à une méthode.
[1, 2, 3].each do |n|
puts n * 2
endIci, each est une méthode du tableau, et do |n| ... end est le bloc. each exécute le bloc une fois pour chaque élément, en le lui transmettant sous la forme de n.
Les blocs ne sont pas des objets distincts que vous stockez dans des variables ; ils sont directement liés à l’appel de méthode. Une méthode reçoit un bloc ou n’en reçoit pas, et la plupart des méthodes d’itération (each, map, select, times) sont conçues pour en recevoir un.
3.times do |i|
puts "hi #{i}"
endAppeler une méthode sans son bloc modifie ce qu’elle fait. [1,2,3].map sans bloc renvoie un énumérateur au lieu d’un tableau transformé, le bloc fait donc partie de ce que signifie la méthode.
Défi
DébutantLisez un entier n depuis l’entrée. Utilisez la méthode times avec un bloc pour afficher le message Iteration <i> pour chaque valeur de i de 0 à n - 1.
Pour l’entrée 3, la sortie est :
Iteration 0
Iteration 1
Iteration 2Essayez vous-même
n = gets.to_i
# TODO: utilisez n.times avec un bloc pour afficher chaque itération
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et Flux
1Les chaînes de caractères en profondeur
Aperçu des méthodes de chaînesInterpolation de chaînesParcourir les chaînesSplit et JoinRécapitulatif - Tisseur de chaînes4Blocs, Procs et Lambdas
Qu'est-ce qu'un bloc ?do..end ou accoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes, 2e partie
Hash.new avec valeurs par défautParcourir les hashesHashes imbriquésFusionner et transformerRécapitulatif - Compteur de fréquences10Projet - Dossiers des étudiants
Présentation du projetAjouter un étudiant2Plages
Qu’est-ce qu’une plage ?Méthodes des plagesPlages dans Case / WhenRécapitulatif - Exercices sur les plages5Puissance des Enumerable
Select et RejectChaînage de MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Pipeline de donnéesEntraînez-vous par vous-même : Compilateur Ruby en ligne