Allgemeines

Ninox ist eine typisierte und vorkompilierte Sprache. Das heißt, die Datentypen, mit denen die Sprache umgeht, sind im Voraus bekannt – anders als bei Sprachen wie JavaScript, die mit Variablen umgehen können, ohne deren Typ zu kennen.

Ein großer Vorzug von Ninox ist, dass der erzeugte Code besonders zuverlässig ist; Fehlfunktionen treten nur äußerst selten auf.

Zu Ihrer Information: Das Ninox-Skript wird vor der Ausführung nach JavaScript übersetzt.

Verschachtelter und linearer Code

Jede Funktion und jede Anweisung gibt einen Wert zurück, der sich unmittelbar als Parameter an eine andere Funktion oder Anweisung übergeben lässt:

var a := format(now(), "DD/MM/YYYY");

So lässt sich einer Variablen eine Reihe verschachtelter Ausdrücke zuweisen:

var a := true;
var b := if a then "true" else "false";

Ebenso kann man b das Ergebnis eines in Klammern eingeschlossenen linearen Codeblocks zuweisen:

var b := (
    var a := true;
    if a then "true" else "false" end
);

Denken Sie daran: Bei linearem Code bestimmt stets die letzte Zeile den zurückgegebenen Typ und Wert. In diesem Beispiel ist b gleich 10:

var b := (
    var a := true;
    if a then "true" else "false" end;
    10
);

Methoden

Methoden sind Funktionen, die einen oder mehrere Parameter entgegennehmen und einen Wert zurückgeben. Sowohl die Parameter als auch der Rückgabewert sind fest vorgegeben.

Manche Methoden lassen mehrere Parameterformen zu:

  • date(year, month, day)
    Gibt einen Datumswert zurück.
  • date(myTimeValue)
    Wandelt einen zeitbezogenen Wert in einen Datumswert um. Ist der Wert eine Zahl, so steht er für die Unix-Zeit in Millisekunden.

Eine vollständige Liste der Methoden und ihre Einteilung nach Kategorien finden Sie in der offiziellen Ninox-Dokumentation.

Anweisungen

var, if then else, for, switch, select where usw. sind Anweisungen.

Anders als bei Methoden hängt der Rückgabetyp einer Anweisung von dem Code ab, den sie enthält. Der folgende Code gibt zum Beispiel ein Array von Zahlen [1, 2] zurück:

for i in range(1,3) do
  i;
end;