Loading...
 

Crystal Blocks und yield

Blocks und das Keyword 'yield'


Der Befehl 'yield' wird innerhalb von Funktionen verwendet, um auf, an die Funtkion, übergebene Blöcke zuzugreifen - alles klar, oder?

Was eine Funktion ist haben wir ja schon hier gelernt.

Damit man verstehen kann, was ein Block ist, brauchen wir zunächst mal eine Funktion in der das Keyword 'yield' steht.

def die_funktion
  puts "Die Funktion"
  yield
end


Ein Block besteht aus einem Programmteil, der wie folgt definiert wird:

die_funktion do
  puts "Ich bin im Block"
end


Beides zusammen sieht dann so aus:
Beachtet die verschiedenen Möglichkeiten, wie man die Funktion aufrufen kann.

def die_funktion
  puts "Die Funktion"
  yield
end

#Möglichkeit A
die_funktion do
  puts "Ich bin im Block A"
end

#Möglichkeit B
die_funktion() do
  puts "Ich bin im Block B"
end

#Möglichkeit C
die_funktion {puts "Ich steh in fingerbrecher Klammern"}


Ausgabe:
Die Funktion
Ich bin im Block A
Die Funktion
Ich bin im Block B
Die Funktion
Ich steh in fingerbrecher Klammern

Übergabeparameter für yield

def die_funktion
  puts "Die Funktion"
  yield 1
  puts "nach yield1"
  yield 2
end
 
# Möglichkeit A
die_funktion do |i|
  puts "zur Funktion #{i}"
end

# Möglichkeit B (Kurzform)
die_funktion {|i| puts "Kurzform #{i}"}


Ausgabe:
Die Funktion
zur Funktion 1
nach yield1
zur Funktion 2
Die Funktion
Kurzform 1
nach yield1
Kurzform 2