Was machen wir, wenn wir ganz oft “Hallo” sagen wollen, ohne uns die Finger wund zu tippen? Wir definieren eine Methode!
Mit dem Code def h
beginnt man die Methodendefinition. Er teilt Ruby
mit, dass wir eine Methode definieren, deren Name h
ist. Die nächste
Zeile nennt man Rumpf (“Body”) der Methode. Sie ist identisch zu der
Zeile, die wir schon von vorhin kennen: puts "Hallo, Welt!"
. Und
schließlich teilt die letzte Zeile end
Ruby mit, dass wir fertig mit
der Methodendefinition sind. Rubys Antwort => nil
sagt uns, dass Ruby
das nun weiß.
Die kurzen, immer wiederkehrenden Lebenszyklen einer Methode
Rufen wir nun die Methode ein paar Mal auf:
So einfach ist das also! Man ruft eine Methode auf, indem man Ruby einfach ihren Namen nennt. Wenn die Methode keine Parameter hat, ist das alles, was man machen muß. Wenn man will, kann man noch ein leeres Klammer-Paar ans Ende des Methodennamens setzen, aber das ist nicht notwendig.
Was, wenn wir nun Hallo zu einer ganz bestimmten Person statt zur ganzen
Welt sagen möchten? Dann definieren wir h
einfach neu, so dass ein
Name als Parameter akzeptiert wird:
Es funktioniert also … aber sehen wir uns genauer an, was hier vor sich geht.
Platzhalter in Zeichenketten
Mit dem Platzhalter #{name}
fügt man in Ruby etwas in eine
Zeichenkette (“String”) ein. Die Variable name
selbst wird zuerst in
einen String umgewandelt (falls sie nicht bereits eine ist) und dann an
der entsprechenden Stelle innerhalb der Zeichenkette eingefügt. Das kann
man auch dazu benutzen, um sicherzugehen, dass der Name einer Person mit
einem Großbuchstaben anfängt:
Hier kann man noch weitere Tricks beobachten. Einer davon ist, dass wir
die Methode wieder ohne Klammern aufrufen. Wenn es also offensichtlich
ist, was man machen will, kann man die Klammern ruhig weglassen. Der
andere Trick ist der voreingestellte Parameter (“default parameter”)
Welt
. Was das bedeutet, ist: “Wenn kein Name als Parameter
mitgeliefert wird, benutze 'Welt'
als Namen”.
Ein simples Hallo entwickelt sich zu einer richtigen Begrüßung
Du möchtest eine richtige Begrüßung? Etwas, das sich an Deinen Namen erinnert, Dich willkommenheißt und Dich immer mit Respekt behandelt? Dafür erzeugen wir am besten ein Objekt. Lass uns also eine Klasse “Greeter” (“Begrüßer”) schreiben!
Das neue Schlüsselwort hier ist class
. Damit definieren wir eine neue
Klasse namens “Greeter” und eine gewisse Anzahl von Methoden für diese
Klasse. Beachte auch @name
! Das ist eine Instanzvariable, die allen
Methoden der Klasse zur Verfügung steht. Wie Du sehen kannst, wird sie
von sag_hallo
und sag_tschuess
benutzt.
Wie setzen wir diese Begrüßungsklasse also in Bewegung? Ganz einfach: Wir erzeugen ein Objekt!