2.05) Wenn-Dann

Bis jetzt nutzten wir nur eine einzelne Zeile. JM° ist hier sehr mächtig und so kann in einer einzelnen Zeile sehr viel gemacht werden. Nun nehmen wir einen sogenannten "Block" dazu. Dieser wird mit einem Tabulator eingerückt.
Hierfür nun bitte das WebStart-Tool oder eine einfache Textdatei nutzen.

Es ist auch möglich alles in einer Zeile zu schreiben, in dem nach einem ';' ein Tabulator folgt. Allerdings ist dies nicht besonders übersichtlich.

Wenn

Ein Block wird mit einem Tabulator eingerückt.

If( 4 == 3+1 )
"Ist wahr".print

Dies kann man nun wie folgt lesen: Wenn 4 gleich 3+1 ist, dann gib "Ist wahr" aus.

Hier können wir natürlich auch Variablen nutzen:

a = 3
If( a > 1 )
"Ja, der Wert in 'a' ist größer als 1".print

Da If immer einen Wahrheitswert benötigt, können wir diesen auch über eine Variable oder direkt übergeben:

If( true )
"Ja, das ist wahr".print

b = true
If( b )
"Ja, das ist wahr".print

Hier lernen wir nun einen weiteren Typ kennen, nämlich "Bool". Ein boolscher Wert kann entweder ja/wahr oder nein/unwahr sein. Erzeugt wird er mit dem Text "true" (wahr) oder "false" (nicht wahr).
Was passiert nun, wenn wir in obigen Beispiel das "true" durch ein "false" ersetzen? Probieren wir es aus:

If( false )
"Nein, das ist nicht wahr".print

Leider wird hier der Text nicht ausgegeben. Es heißt ja "Wenn der Wert wahr ist, dann mach ...". Somit macht If in diesem Fall korrekter Weise ... nichts.

Ansonsten

Wir könnten nun von Bool die .not-Funktion nutzen, doch versuchen wir ein weiteres wichtiges Konstrukt:

If( false )
"Ja, das ist wahr".print
.else
"Nein, das ist nicht wahr".print

Hier wird nun der zweite Satz ausgegeben. ".else" ist eine Funktion von "If", die wir hier nutzen können. Wir können dies lesen wie: "Wenn der Wert wahr ist, mach dies, ansonsten mach das."

Das ".else" wird durch den Punkt an das vorherige Objekt auf der selben Ebene angehängt.

Aufbau

Um es zu verdeutlichen:

5
.echo
.print

Dies ist identisch zu:

5.echo.print

Übertragen auf "If", und wenn wir es vollständig ausschreiben, dann wird der Zusammenhang klarer:

If( false )
.then
"Ja, das ist wahr".print
.else
"Nein, das ist nicht wahr".print

So wird in der ersten Zeile eine Objekt-Instanz vom Typ "If" mit dem Parameter "false" erzeugt. Danach folgt die Funktion ".then" mit einem Block und dann die Funktion ".else" ebenso mit einem Block.

Das ".then" kann hier entfallen, da es die Standard-Funktion (Auto-Block-Funktion) von "If" ist. Dies wird später genauer erklärt.