0Pricing
Ruby Academy · Leçon

Procs

Objets blocs réutilisables

Procs est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.

Objets bloc réutilisables

Un bloc n’est pas un objet en soi : vous ne pouvez donc pas le stocker dans une variable. Un Proc enveloppe un bloc dans un véritable objet que vous pouvez enregistrer, transmettre et appeler ultérieurement.

greeter = Proc.new { puts "Hello!" }
greeter.call
greeter.call

Créer des Proc

Deux façons courantes de créer un Proc : Proc.new { ... } et la méthode Kernel plus courte proc { ... }. Les deux produisent le même type d’objet.

double = proc { |x| x * 2 }
p double.call(5)

Appeler un Proc

Vous pouvez invoquer un Proc de plusieurs façons : .call, .() et la notation abrégée avec crochets [ ]. Elles sont équivalentes.

square = proc { |x| x * x }
puts square.call(4)
puts square.(4)
puts square[4]

Les Proc acceptent des arguments

Les Proc acceptent des paramètres comme les blocs, déclarés entre les barres verticales.

add = proc { |a, b| a + b }
puts add.call(3, 7)

Stocker des Proc dans des tableaux

Comme les Proc sont des objets, vous pouvez conserver une collection de comportements et les exécuter tour à tour.

ops = [proc { |x| x + 1 }, proc { |x| x * 2 }]
result = 5
ops.each { |op| result = op.call(result) }
puts result

Transmettre un Proc comme bloc

Préfixez un Proc avec & pour le transmettre à une méthode qui attend un bloc. Ruby le reconvertit en bloc.

printer = proc { |n| puts "Item: #{n}" }
[1, 2, 3].each(&printer)

Capturer des blocs comme Proc

L’inverse fonctionne également : &block dans la signature d’une méthode capture le bloc fourni sous forme de Proc que vous pouvez stocker.

def make_handler(&block)
  block
end
h = make_handler { |msg| puts "Got: #{msg}" }
h.call("ping")

Les Proc sont souples avec l’arité

Une caractéristique essentielle : les Proc ne signalent pas les nombres d’arguments incorrects. Les arguments manquants deviennent nil et les arguments supplémentaires sont ignorés.

p1 = proc { |a, b| puts "a=#{a.inspect} b=#{b.inspect}" }
p1.call(1)
p1.call(1, 2, 3)

Les Proc et return

Un return dans un Proc renvoie le résultat depuis la méthode environnante, et non depuis le Proc uniquement. Cela peut vous surprendre ; soyez donc prudent.

def demo
  p = proc { return 10 }
  p.call
  20  # never reached
end
puts demo

Les Proc capturent leur environnement

Un Proc mémorise les variables de la portée où il a été défini. Il s’agit ainsi d’une fermeture, un sujet que nous étudierons plus loin.

factor = 3
times_factor = proc { |n| n * factor }
puts times_factor.call(10)

Mise en pratique

Les Proc transforment les blocs en objets de première classe :

  • Créez-les avec proc { } ou Proc.new.
  • Exécutez-les avec .call, .() ou [ ].
  • Transmettez-les aux méthodes avec &.
  • Ils sont souples concernant l’arité et utilisent le return au niveau de la méthode.
pipeline = [proc { |s| s.upcase }, proc { |s| s + "!" }]
text = "hello"
pipeline.each { |step| text = step.call(text) }
puts text

Vérification rapide

Vérifiez votre compréhension des Proc.

Récapitulatif

Vous avez appris à utiliser les Proc :

  • Un Proc est un bloc enveloppé dans un objet.
  • Créez-le avec proc/Proc.new ; exécutez-le avec .call.
  • Transmettez-le aux méthodes avec &.
  • Il tolère les divergences d’arité et utilise le return au niveau de la méthode.
shout = proc { |word| puts word.upcase }
shout.call("ruby")

Questions Fréquemment Posées

La leçon « Procs » est-elle gratuite ?

Oui — le texte complet de « Procs » 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 « Procs » ?

Objets blocs réutilisables 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 2 sur 4.

Combien de temps prend la leçon « Procs » ?

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

  1. Récapitulatif des blocs
  2. Procs
  3. Lambdas
  4. Fermetures et portée
← Retour à Ruby Academy