Objects
Without noticing, we have already used a few more objects, namely "If", "Count", "While", "Repeat" and "For". These are so-called control objects, which will be described in more detail later.
In JM° there are thus 3 types of objects:
- Atomare Objekte ( Konstant, einzigartig und in sich nicht veränderbar )
- Normale Objekte ( Jedes Objekt ist individuell und hat eigene Zustände )
- Control objects ( Normal objects with extended control properties )
Zudem müssen wir zwischen Objekt-Typ und Objekt-Instanz unterscheiden:
- Ein Objekt-Typ bildet das Grundgerüst, also sozusagen den Bauplan für ein Objekt.
- An object instance is an individual object based on an object type.
Wird in dieser Dokumentation von "Objekt" gesprochen, so ist damit eine Objekt-Instanz gemeint.
Ein Objekt-Typ beginnt immer mit einem Großbuchstaben. Beim Aufruf dieses Types wird direkt eine neue Instanz erzeugt.
Dies wollen wir uns anhand von zwei weiteren wichtigen Objekten anschauen:
Random
Mit "Random" steht uns in JM° ein Zufallsgenerator zur verfügung:
Random
Jau ... Hiermit haben wir eine Objekt-Instanz vom Typ "Random" erzeugt. Dieses Objekt steht nun allerdings sehr einsam herum und weiß nicht was es tun soll 😂 Also, geben wir ihm einen Auftrag:
Random.newInt.print
Dies erzeugt nun eine zufällige Ganzzahl und gibt diese aus. Mit Argumenten läßt sich der Bereich z.B. zwischen 1 und 10 ...
Random.newInt( 10 ).print
... or delimit 100 and 999:
Random.newInt( 100, 999 ).print
Similarly, we can create a random boolean object:
Random.newBool.print
Dies lässt sich auch mit anderen Objekten kombinieren:
Print "Soll ich das wirklich tun?"
Print Random.newBool.use( "Ja!", "Nein!" )
Input
Wer JM° mit einer Skript-Datei und nicht in der IDE verwendet, kann den Typ "Input" nutzen. Hiermit bitten wir den Benutzer um eine Eingabe:
Echo "Bitte eine Zahl eingeben: "
i = Input.readInt
Print "Die eingegebene Zahl ist: " + i
Likewise, we can enter a decimal number ...
Input.readDec.print
... or query a string:
Input.readStr.print
Important:
If the user does not enter a valid value, the function will return "Nil" as result!
Dies können wir einerseits mit ".isNil" abfragen, oder wir setzen im Falle von "Nil" einfach einen Standard-Wert:
Input.readDec.replaceNil( 1.0 ).print