Raku-Kurs / Fortgeschritten / Kontrollfluss / Anweisungspräfixe / Exercises / Sofortige Auswertung erzwingen
Lösung: Sofortige Auswertung erzwingen
Hier ist eine mögliche Lösung der Aufgabe.
Code
say (1 .. Inf).is-lazy;
say (eager 1..3).is-lazy;
say (lazy 1..3).is-lazy;🦋 Du findest den Quellcode in der Datei force-eager.raku.
Ausgabe
True
False
TrueKommentare
Ein Bereich bis
Infkann nicht auf einmal berechnet werden, daher ist er lazy:.is-lazygibtTruezurück.Das
eager-Präfix erzwingt die sofortige Erzeugung einer Liste, sodass das Ergebnis nicht mehr lazy ist —.is-lazygibtFalsezurück. Dies ist das direkte Gegenstück zur Markierung einer Liste alslazy.Wende
eagernicht auf einen unbegrenzten Bereich an:eager 1 .. Infversucht, jedes Element auf einmal zu berechnen, sodass das Programm einfach hängt und immer mehr Speicher verbraucht, bis es beendet wird.eagerist nur bei Listen sicher, von denen du weißt, dass sie endlich sind.Das Gegenteil funktioniert ebenfalls:
lazy 1..3markiert sogar einen kurzen, endlichen Bereich als lazy, sodass.is-lazyTruezurückgibt. Das Präfix setzt das Laziness-Flag unabhängig davon, wie klein die Liste ist — sie muss nicht unendlich sein, um lazy zu sein.
Kursnavigation
← Sofortige Auswertung erzwingen | Eine Warnung unterdrücken →