<- Thema dieses Kapitels
Klassen und Methoden ->

Functionen

Was ist eine Funktion?

Eine Funktion ist eine Methode, die nicht in Verbindung steht mit irgendeinem betimmten Objekt. Sie haben bereits eine Funktion gesehen: "puts". Beachten Sie die Syntax:


puts "Hallo" # satt: object.puts "Hallo"  
                       

Hallo Welt mit einer Funktion

Hier eine einfache Funktion:


def sag_hallo
    puts "Hallo, wie geht's?"  
end
                       

Nun haben wir die Funkktion sag_hallo definiert. Wenn Sie die Funktion "sag_hallo" aufrufen, wird der Code in dem Block ausgeführt. Zum Beispiel:


def sag_hallo
    puts "Hallo, wie geht's?"  
end

sag_hallo
sag_hallo
                       

Gibt aus:


"Hallo, wie geht's?"
"Hallo, wie geht's?"
                       

Wie Sie sehen können, sind Funktionn der erste Schritt dahin, Code wiederzuverwenden.

Funktionsargumente

Funktionen und Methoden kann man Argumente übergeben. Hier eine verbesserte sag_hallo-Funktion.


# 'name' enthaelt die Benutzereingabe
def sag_hallo(name)
puts "Hallo " + name + ", wie geht's?"  
end

say_hi("Daniel")
say_hi "Sandy" 
                       

Die Ausgabe ist:


Hallo Daniel, wie geht's?  
Hallo Sandy, wie geht's?
                       

Eine Adresse ausgeben

Schreiben wir nun eine sinnvollere Funktion. Recall the address structures:


# Josef's Adresse
josef_adr= {
  "strasse" => "23 St George St.",  
  "stadt"   => "Silver Spring",
  "land"    => "MD",
  "plz"     => "20465"
}

# Herbert's Adresse
herbert_adr = {
  "strasse" => "324 Campus Dr.",
  "stadt"   => "College Park",
  "land"    => "MD",
  "plz"     => "23659"
}
                       

Erstellen wir eine Funktion, um diese auszugeben:


def print_adr(adresse)
    land  = addresse["land"]
    plz   = addresse["plz"]

    puts "    " + adresse["strasse"]  
    puts "    " + adresse["stadt"]
    puts "    " + land ", " + plz
end
                       

Nun können wir einfach Adressen ausgeben:


puts "Josef:"
print_adr(melissa_adr)  

puts "Herbert:"
print_adr(sandy_adr)
                       

Und das gibt aus:


Melissa:
    23 St George St.  
    Silver Spring
    MD, 20465
Sandy:
    324 Campus Dr.
    College Park
    MD, 23659
                       
<- Thema dieses Kapitels
Klassen und Methoden ->