Objekt-Funktionen
Jedes JayMo-Objekt erbt vom Basis-Typ "Object" und bietet damit bereits eine Vielzahl von Funktionen. Hier werden einige wichtige beschrieben.
toStr
Mit ".toStr" kann jedes beliebige Objekt in einen String umgewandelt werden.
nil.toStr.print
5.toStr.print
print / echo
Um ein Objekt über die Standard-Ausgabe (Konsole) auszugeben, existieren in JayMo zwei Funktionen.
- ".print" gibt das Objekt aus, gefolgt von einem Zeilenumbruch.
- ".echo" gibt ebenso das Objekt aus, allerdings ohne gefolgtem Zeilenumbruch.
3.echo.echo.print
compare
Mit Compare werden zwei Objekte miteinander verglichen. Ist das aktuelle Objekt kleiner wird -1, ist es größer wird 1, und bei Gleichheit wird 0 zurückgegeben.
123.compare( 321 ).print
pass
Mit ".pass" wird das aktuelle Objekt an einen nachfolgenden Block und dessen Stream übergeben.
5.add(3).pass
it.echo
.print
replaceNil
Dies ist eine sehr praktische Funktion. Falls das aktuelle Objekt "nil" ist, wird es hiermit durch das übergebene Objekt ersetzt.
a? = nil
a?.replaceNil( 0 ).print
Das Ergebnis ist somit "0".
which
Mit dieser Funktion können teils längere if-else-Ketten ersetzt werden.
"which" werden mehrere Prüfungen übergeben. Als Ergebnis wird zurückgegeben, welche Prüfung als erstes "true" zurück gab. Trifft keine der Prüfungen zu, kommt "nil" zurück.
item = 'R'
item.which( cur <= 'C', cur == 'E', cur > 'T', cur < 'T', true ).print
In diesem Fall ist das Ergebnis 3, da 'R' größer ist als 'T'.
Die Übergabe von "true" als letzte "Prüfung" führt dazu dass, sollte nichts zutreffen, das Ergebnis 5 und nicht "nil" ist.
isNil, isNotNil
Diese Funktionen prüfen, ob das aktuelle Objekt "nil" oder nicht "nil" ist. Das Ergebnis wird als Bool-Wert zurückgegeben.
nil.isNil.print # true
'a'.isNil.print # false
nil.isNotNil.print # false
'a'.isNotNil.print # true
ifNil, ifNotNil
Wenn das aktuelle Objekt "nil" (bzw. nicht "nil") ist, wird der zugehörige Block inkl. Stream ausgeführt. Andernfalls wird die Verarbeitung abgebrochen.
nil.ifNil
"Yes, the object is nil".print
'x'.ifNil
"This string will be ignored".print
'x'.ifNotNil
"The current object is not nil".print
Dies kann ebenso in einer Zeile verwendet werden:
nil.ifNil.print( "Das aktuelle Objekt ist Nil!" )
nilUse
"use" steht in JayMo für eine Bedingung, bei der entweder das eine, oder das andere, Objekt verwendet wird.
Ist das aktuelle Objekt "nil", so wird bei dieser Funktion das erste Argument, ansonsten das Zweite zurückgegeben.
nil.nilUse( 'a', 'b' ).print
typeUse
Ähnlich verhält es sich bei "typeUse". Hier werden 3 Argumente übergeben. Entspricht der Typ des aktuellen Objekt's dem angegebenen Typ, so wird das Erste, ansonsten das Zweite Objekt zurückgegeben.
"abc".typeUse( "Str", 'a', 'b' ).print