Récapitulatif des blocs
Transmettez des blocs aux méthodes
Récapitulatif des blocs est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Ruby Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ruby Academy comprend 4 leçons au total.
Passer des blocs aux méthodes
Un bloc est un morceau de code que vous transmettez à une méthode. De nombreuses méthodes Ruby, comme each, acceptent un bloc et l'exécutent pour vous. Les blocs sont au fondement du style expressif de Ruby.
[1, 2, 3].each do |n|
puts n * 10
endDeux syntaxes de blocs
Utilisez do ... end pour les blocs sur plusieurs lignes et les accolades { } pour les instructions courtes sur une seule ligne. Elles se comportent de la même manière.
[1, 2, 3].each { |n| puts n }Paramètres de bloc
Les noms placés entre les barres | | sont les paramètres du bloc. La méthode détermine les valeurs qui leur sont transmises.
{ a: 1, b: 2 }.each do |key, value|
puts "#{key} = #{value}"
endyield appelle le bloc
À l'intérieur d'une méthode, yield exécute le bloc transmis. Vous n'avez pas besoin de déclarer le bloc dans la liste des paramètres pour utiliser yield.
def twice
yield
yield
end
twice { puts "Hi" }yield avec des arguments
Transmettez des valeurs au bloc avec yield. Elles sont affectées aux paramètres du bloc.
def greet_each(names)
names.each { |n| yield n }
end
greet_each(["Ann", "Bo"]) { |name| puts "Hello #{name}" }block_given?
Appeler yield sans bloc déclenche une erreur. Vérifiez d'abord avec block_given? pour rendre le bloc facultatif.
def maybe
if block_given?
yield
else
puts "No block provided"
end
end
maybe
maybe { puts "Block ran" }Les blocs renvoient des valeurs
Un bloc s'évalue jusqu'à sa dernière expression. Les méthodes comme map rassemblent ces valeurs de retour dans un nouveau tableau.
squares = [1, 2, 3, 4].map { |n| n * n }
p squaresLa valeur de yield
yield renvoie lui-même la valeur du bloc, ce qui permet à une méthode de transformer une entrée au moyen d'un bloc fourni par l'appelant.
def transform(x)
yield x
end
result = transform(5) { |n| n + 100 }
puts resultCapturer un bloc avec &
Préfixez le dernier paramètre par & pour capturer le bloc sous la forme d'un objet Proc que vous pouvez stocker ou transmettre.
def run(&block)
block.call
end
run { puts "Called via block.call" }Paramètres numérotés
Ruby moderne vous permet d’omettre le nom d’un seul paramètre de bloc en utilisant _1 (ou it dans Ruby 3.4+). Pratique pour les blocs très courts.
[10, 20, 30].each { puts _1 }Mise en pratique
Les blocs permettent aux méthodes d’accepter un comportement :
do...endou{ }fournissent un bloc.yieldl’exécute ;block_given?vérifie sa présence.&blockle transforme en objet réutilisable.
def repeat(times)
return unless block_given?
times.times { |i| yield i }
end
repeat(3) { |i| puts "Step #{i}" }Vérification rapide
Vérifiez votre compréhension des blocs.
Récapitulatif
Vous avez revu les blocs :
- Les blocs transmettent un comportement aux méthodes via
do...endou{ }. yieldexécute le bloc et renvoie sa valeur.block_given?rend les blocs facultatifs.&blockcapture un bloc sous forme de Proc.
def wrap
puts "<<"
yield
puts ">>"
end
wrap { puts "content" }Questions Fréquemment Posées
La leçon « Récapitulatif des blocs » est-elle gratuite ?
Oui — le texte complet de « Récapitulatif des blocs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Ruby Academy, passe à CoddyKit PRO. Le cours Ruby Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Récapitulatif des blocs » ?
Transmettez des blocs aux méthodes Tu pratiques Ruby Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Ruby Academy ?
Aucune expérience préalable n'est requise. Ruby Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Récapitulatif des blocs » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Ruby Academy ?
Oui. Chaque leçon Ruby Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Récapitulatif des blocs
- Procs
- Lambdas
- Fermetures et portée