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 avez déjà écrit 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 passé à une méthode.
[1, 2, 3].each do |n|
puts n * 2
endIci, each est une méthode sur le tableau, et do |n| ... end est le bloc. each exécute le bloc une fois pour chaque élément, en le passant comme n.
Les blocs ne sont pas des objets distincts que vous stockez dans des variables, ils sont directement liés à l'appel de la 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 accepter un.
3.times do |i|
puts "hi #{i}"
endAppeler une méthode sans son bloc modifie son comportement. [1,2,3].map sans bloc renvoie un énumérateur au lieu d'un tableau transformé, le bloc fait donc partie de la signification de 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 allant de 0 jusqu'à n - 1.
Pour l'entrée 3, la sortie est :
Iteration 0
Iteration 1
Iteration 2Aide-mémoire
Un bloc est un morceau de code passé à une méthode entre do |param| ... end :
[1, 2, 3].each do |n|
puts n * 2
endUtilisez times pour répéter un bloc n fois, avec i allant de 0 à n - 1 :
3.times do |i|
puts "hi #{i}"
endEssayez vous-même
n = gets.to_i
# À FAIRE : utiliser 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 - String Weaver4Blocs, Procs & Lambdas
Qu'est-ce qu'un bloc ?do..end vs AccoladesLe mot-clé yieldParamètres de blocProcs et LambdasRécapitulatif - Itérateur personnalisé7Hashes - Partie 2
Hash.new avec des valeurs par défautItérer sur les HashesHashes imbriquésFusion et transformationRécapitulatif - Compteur de fréquence10Projet - Dossiers étudiants
Présentation du projetAjouter un étudiant2Intervalles
Qu'est-ce qu'un intervalle ?Méthodes d'intervalleLes intervalles dans Case / WhenRécapitulatif - Pratique des intervalles5La puissance d'Enumerable
Select et RejectChaîner MapReduce / Injectcount, all?, any?, none?group_by et partitionsort_by, min_by, max_byRécapitulatif - Data Pipeline