Raku-Kurs / Fortgeschritten / Subroutinen
Anonyme Unterprogramme
Eine Subroutine muss keinen Namen haben. Eine anonyme Subroutine wird genauso geschrieben wie eine normale, aber ohne Namen, und wird üblicherweise in einer Variablen gespeichert, damit man sie später aufrufen kann.
my $double = sub ($x) {
$x * 2
};
say $double(5); # 10Die Variable $double enthält die Subroutine, und
$double(5) ruft sie mit dem Argument 5
auf.
Pointy Blocks
Raku bietet eine kürzere Schreibweise für dasselbe — den Pointy
Block. Er verwendet den Pfeil -> zur Einführung der
Parameter und braucht weder das Wort sub noch Klammern um
sie herum:
my $double = -> $x {
$x * 2
};
say $double(5); # 10Dies ist die gebräuchlichste Art, eine kleine anonyme Subroutine zu schreiben.
Das &-Sigil
Wenn Sie die Subroutine lieber über einen Namen als über eine
$-Variable aufrufen möchten, deklarieren Sie die Variable
mit dem &-Sigil. Dann können Sie sie ohne Sigil
aufrufen, genau wie eine gewöhnliche Subroutine:
my &triple = -> $x {
$x * 3
};
say triple(4); # 12Übergabe an eine andere Funktion
Sie müssen eine anonyme Subroutine gar nicht in einer Variablen
speichern. Da sie nur ein Wert ist, können Sie sie direkt an eine
Funktion übergeben, die eine erwartet — wie map,
grep oder sort:
say (1, 2, 3).map(-> $x { $x * 2 }); # (2 4 6)Der Pointy Block ist hier die anonyme Subroutine, und
map ruft sie einmal für jedes Element auf. Genau das haben
Sie die ganze Zeit getan: Jeder { ... }-Block und jedes
-> $x { ... }, das Sie an map und
grep übergeben haben, ist eine kleine anonyme Subroutine,
die direkt dort geschrieben wird, wo sie gebraucht wird, anstatt zuerst
benannt zu werden.
Praxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Übungen
Dieser Abschnitt enthält 3 Übungen. Sehen Sie sich alle Themen dieses Abschnitts an, bevor Sie mit den Übungen beginnen.
Kursnavigation
← Quiz — Verschachtelter Gültigkeitsbereich | Verdreifachen →