Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte
Subroutinen und Methoden
Sie haben nun zwei Möglichkeiten, ein Stück Verhalten zu verpacken: eine Subroutine und eine Methode. Sie sehen ähnlich aus, werden aber unterschiedlich verwendet.
Eine Subroutine steht für sich. Sie rufen sie über ihren Namen auf und übergeben ihr alles Nötige als Argumente:
sub area-of($radius) {
π * $radius * $radius;
}
say area-of(2); # 12.566370614359172Eine Methode gehört zu einer Klasse und wird mit dem Punkt auf einem
Objekt aufgerufen. Sie kann über self und die
Attribut-Accessoren die eigenen Daten des Objekts verwenden, diese Daten
übergeben Sie also nicht:
class Circle {
has $.radius;
method area {
π * $.radius * $.radius;
}
}
say Circle.new(radius => 2).area; # 12.566370614359172Beide berechnen dieselbe Zahl. Der Unterschied liegt darin, woher die Daten kommen: Die Subroutine erhält den Radius als Argument, während die Methode ihn von dem Objekt liest, auf dem sie aufgerufen wurde.
Als Faustregel: Nehmen Sie eine Subroutine für eine eigenständige Operation, die einfach ihre Argumente umwandelt, und eine Methode, wenn das Verhalten von Natur aus zu einem Objekt gehört und mit dessen eigenem Zustand arbeitet. Für klassenspezifische, aber allgemeine Routinen nehmen Sie Klassenmethoden.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Übungen
Dieser Abschnitt enthält 2 Übungen. Sehen Sie sich alle Themen dieses Abschnitts an, bevor Sie mit den Übungen beginnen.