Paramètres de bloc
Fait partie de la section Logique et Flux du Journey Ruby de Coddy — leçon 18 sur 56.
Les variables entre les barres verticales, |x|, |x, y|, sont les paramètres de bloc. Ils nomment les valeurs que la méthode passe au bloc.
Certaines méthodes passent une seule valeur, d'autres en passent plusieurs. each passe un élément à la fois :
[10, 20, 30].each { |n| puts n }each_with_index transmet deux arguments, l'élément et son index :
["a", "b", "c"].each_with_index do |letter, i|
puts "#{i}: #{letter}"
end
# 0: a
# 1: b
# 2: cLors de l'itération d'un hash, les paramètres du bloc sont la clé et la valeur :
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endLe nombre et l'ordre des paramètres de bloc dépendent de ce que la méthode produit. En cas de doute, consultez la documentation ou essayez un paramètre pour voir ce que vous obtenez.
Défi
FacileLe hash scores est fourni. Parcourez-le avec each_with_index sur sa forme to_a afin d'avoir accès à la fois à la paire (name, points) et à sa position. Affichez une ligne par entrée dans ce format :
<rank>. <name> - <points>Où rank commence à 1 (pas 0).
Pour le hash par défaut, la sortie est :
1. Alice - 90
2. Bob - 85
3. Cara - 78Aide-mémoire
Les paramètres de bloc sont nommés entre des barres verticales |...| et reçoivent les valeurs transmises par la méthode :
# each – un paramètre
[10, 20, 30].each { |n| puts n }
# each_with_index – l'élément et l'index
["a", "b", "c"].each_with_index do |letter, i|
puts "#{i}: #{letter}"
end
# hash each – la clé et la valeur
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endhash.to_a convertit un hash en un tableau de paires [key, value], ce qui est utile avec each_with_index :
{ a: 1, b: 2 }.to_a.each_with_index do |(key, value), i|
puts "#{i}: #{key} = #{value}"
endEssayez vous-même
scores = { "Alice" => 90, "Bob" => 85, "Cara" => 78 }
# À FAIRE : afficher "<rank>. <name> - <points>" pour chaque entrée, le rang commence à 1
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