… JayMo-Flow (Follow the Flow) / Pass-Break-Filter

Pass-Break-Filter

Objekte werden von Funktion zu Funktion weiter gegeben. In diesen Ablauf lassen sich Filter einbauen, die ggf. die Weitergabe unterbrechen.

Pass

Zum Verständnis des Nachfolgenden wird hier die Funktion "pass" genauer betrachtet.

"pass" übergibt das aktuelle Objekt in die weitere Verarbeitung durch, wenn vorhanden, Block und Stream.

123.pass
	it.print
.print

In diesem Beispiel wird das Int-Objekt "123" an den angehängten Block und den nachfolgenden Stream übergeben. Somit erfolgt zweimal die Ausgabe von "123".

Hierbei können Block oder/und Stream vorhanden sein, müssen jedoch nicht. Allerdings wird immer zuerst der Block und dann der Stream ausgeführt.

123.pass
	it.print
123.pass
.print
123.pass.print

In allen drei Fällen wird hier einmalig die "123" ausgegeben.

Weitergeben, aber nur wenn ...

An dieser Stelle können nun Filter installiert werden. Die Funktionen dazu nennen sich:

  • passIf
  • passIfNot
  • passIs
  • PassIsNot

Pass, wenn ...

Angenommen, ein Objekt soll nur dann an die weitere Verarbeitung übergeben werden, wenn es größer als 5 ist.

10.times.passIf( cur > 5 ).print

Die "times"-Schleife zählt hier von 1 bis 10. Die Funktion "passIf" prüft jedes Objekt und lässt nur diejenigen durch, welche größer als 5 sind. Dem entsprechend werden nur die Zahlen 6 bis 10 ausgegeben.

"passIfNot" prüft hier die Umkehrung, also ob die Abfrage nicht zutreffend ist.

Pass, aber nur dieses und jenes!

Mit "passIs" werden nur ausgewählte Objekte für die weitere Verarbeitung zugelassen.

10.times.passIs( 3,5,6,9 ).print

Die Schleife zählt wieder von 1 bis 10, wobei allerdings nur die zahlen 3,5,6 und 9 zum "print" weitergereicht werden.

In der Umkehrung lässt sich mit ".passIsNot" filtern, was nicht weitergegeben werden soll:

10.times.passIsNot( 3,5,6,9 ).print

Hier wird alles zu "print" weiter gereicht, was nicht mit den angegebenen Zahlen überein stimmt. Somit werden nur die Zahlen 1,2,4,7,8 und 10 ausgegeben.

Abbruch

Ähnlich zu den vorherigen Pass-Funktionen existieren noch Break-Funktionen, mit denen die weitere Verarbeitung einer Schleife abgebrochen werden kann.

  • breakAt | breakIs
  • breakAtNot | breakIsNot
  • breakIf
  • breakIfNot

"breakAt" ist hierbei ein Alias zu "breakIs" und "breakAtNot" ein Alias von "breakIsNot".

Diese Funktionen verhalten sich ähnlich zu den Pass-Funktionen, allerdings wird hiermit ggf. eine Schleife abgebrochen.

Mit all diesen Funktionen lassen sich die zu verarbeitenden Objekte in einer Schleife bereits am Anfang klar definieren:

data = [4,3,9,0,5,2,1,7,2,6,4,0,8,2,5]

data.each.passIf( cur > 3 && cur < 8 ).breakAt( 6, 8 )
	it.print

In diesem Beispiel wird eine Liste durchlaufen, jedoch nur die Zahlen größer 3 und kleiner 8 verarbeitet. Bei einer 6 oder einer 8 wird die Verarbeitung abgebrochen.

Effektiv werden hier nur die Zahlen 4, 9, 5 und 7 verarbeitet. Danach wird durch die 6 die Schleife beendet.

- Powered by OghsWiki -

 

 

Unterstützen

Die Entwicklung von "JayMo" wird derzeit nur durch Eigeninitiative ermöglicht.

Erhalten:  0 €