Funktionen definieren

Du bist hier: Hinterkattentuffel - Ruby - Funktionen definieren
Prev: Entwicklungsumgebung

Im einführenden Beispiel hatten wir eine Anweisung zur Erzeugung von Playlisten ausprobiert:

Dir["*.mp3"].each { |mp3Datei| printf("%s\n", mp3Datei) }

Soll die Anweisung innerhalb eies größeren Programms mehrfach aufgerufen werden? Dann sollte das Codekonstrukt einen Namen bekommen:

def printPlaylist
  Dir["*.mp3"].each { |mp3Datei| printf("%s\n", mp3Datei) }
end

Eine so definierte Funktion kann über den Funktionsnamen, hier printPlaylist, beliebig oft aufgerufen werden. Ein doppelter Aufruf würde mehr Sinn machen, wenn die verwendete Dateiendung variabel wäre. Das geht über Funktionsparameter:

def printPlaylist(fileExtension)
  Dir["*." + fileExtension].each { |musicFile| printf("%s\n", musicFile) }
end

Jetzt ist folgendes möglich:

printPlaylist('mp3')
printPlaylist('wav')

Funktionen liefern das Ergebnis der letzten Anweisung als Rückgabewert. Man kann das expliziter machen, indem man return-Anweisungen in die Methode einbettet:

def printPlaylist(fileExtension)
  files = Dir["*." + fileExtension]
  files.each { |musicFile| printf("%s\n", musicFile) }
  return files.size
end

Jetzt kann der Aufrufer der Funktion zusätzlich die Anzahl der gefundenen Dateien beziffern:

numberOfFiles = printPlaylist('mp3') + printPlaylist('wav')

Später werden wir sehen, dass es noch viel mehr Möglichkeiten gibt, Code zu strukturieren. Eine davon sind Klassen.

Next: Klassen definieren