0Pricing
Ruby Academy · Lektion

Procs

Wiederverwendbare Blockobjekte

Procs ist eine kostenlose Ruby Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Ruby Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Wiederverwendbare Blockobjekte

Ein Block ist für sich genommen kein Objekt, daher können Sie ihn nicht in einer Variablen speichern. Ein Proc verpackt einen Block in ein echtes Objekt, das Sie speichern, weitergeben und später aufrufen können.

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

Procs erstellen

Es gibt zwei gängige Möglichkeiten, einen Proc zu erstellen: Proc.new { ... } und die kürzere Kernel-Methode proc { ... }. Beide erzeugen denselben Objekttyp.

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

Einen Proc aufrufen

Sie können einen Proc auf mehrere Arten aufrufen: mit .call, .() und der Kurzschreibweise mit eckigen Klammern [ ]. Sie sind gleichwertig.

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

Procs nehmen Argumente entgegen

Procs akzeptieren Parameter genauso wie Blöcke, die zwischen den Pipe-Zeichen angegeben werden.

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

Procs in Arrays speichern

Da Procs Objekte sind, können Sie eine Sammlung von Verhaltensweisen aufbewahren und nacheinander ausführen.

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

Einen Proc als Block übergeben

Stellen Sie einem Proc ein & voran, um ihn an eine Methode zu übergeben, die einen Block erwartet. Ruby wandelt ihn wieder in einen Block um.

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

Blöcke als Procs erfassen

Auch der umgekehrte Weg funktioniert: &block in der Methodensignatur erfasst den übergebenen Block als Proc, den Sie speichern können.

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

Procs sind bei der Arität tolerant

Eine wichtige Eigenschaft: Procs beschweren sich nicht über eine falsche Anzahl von Argumenten. Fehlende Argumente werden zu nil, zusätzliche werden ignoriert.

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

Procs und return

Ein return innerhalb eines Procs kehrt aus der umgebenden Methode zurück, nicht nur aus dem Proc. Das kann überraschend sein, gehen Sie daher vorsichtig damit um.

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

Procs erfassen ihre Umgebung

Ein Proc merkt sich die Variablen, die an der Stelle seiner Definition im Gültigkeitsbereich liegen. Dadurch ist er eine Closure – ein Thema, das wir später ausführlicher behandeln.

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

Alles zusammenführen

Procs machen aus Blöcken erstklassige Objekte:

  • Erstellen Sie sie mit proc { } oder Proc.new.
  • Führen Sie sie mit .call, .() oder [ ] aus.
  • Übergeben Sie sie mit & an Methoden.
  • Sie sind bei der Arität tolerant und verwenden das methodenweite return.
pipeline = [proc { |s| s.upcase }, proc { |s| s + "!" }]
text = "hello"
pipeline.each { |step| text = step.call(text) }
puts text

Kurzer Test

Testen Sie Ihr Verständnis von Procs.

Zusammenfassung

Sie haben Procs kennengelernt:

  • Ein Proc ist ein als Objekt verpackter Block.
  • Erstellen Sie ihn mit proc/Proc.new; führen Sie ihn mit .call aus.
  • Übergeben Sie ihn mithilfe von & an Methoden.
  • Sie tolerieren Abweichungen bei der Arität und verwenden ein methodenweites return.
shout = proc { |word| puts word.upcase }
shout.call("ruby")

Häufig gestellte Fragen

Ist die Lektion „Procs“ kostenlos?

Ja — der vollständige Text von „Procs“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Ruby Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Ruby Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Procs“?

Wiederverwendbare Blockobjekte Du übst Ruby Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Ruby Academy zu starten?

Keine Vorkenntnisse erforderlich. Ruby Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Procs“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Ruby Academy-Lektion Code schreiben und ausführen?

Ja. Jede Ruby Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Wiederholung zu Blöcken
  2. Procs
  3. Lambdas
  4. Closures und Gültigkeitsbereich
← Zurück zu Ruby Academy