Le basi del linguaggio di Ninox

Il linguaggio di script di Ninox serve a scrivere le formule, i pulsanti e i trigger dei tuoi database. Questa pagina raccoglie ciò che c'è da sapere prima di scrivere le prime righe.

Ninox è un linguaggio tipizzato e precompilato. Significa che i tipi di dati trattati dal linguaggio sono noti in anticipo, a differenza di altri linguaggi come JavaScript, che possono gestire variabili senza conoscerne il tipo.

Uno dei grandi vantaggi di Ninox è che il codice prodotto è particolarmente affidabile: i malfunzionamenti sono rarissimi.

Per informazione, lo script Ninox viene compilato in JavaScript prima di essere eseguito.

Codice annidato e codice lineare

Ogni funzione o istruzione restituisce un valore che può essere passato direttamente come parametro a un'altra funzione o istruzione:

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

È quindi possibile assegnare a una variabile un insieme di codice annidato:

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

È anche possibile assegnare a b il risultato di un blocco di codice lineare racchiuso tra parentesi:

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

È importante tenere presente che, nel caso del codice lineare, è sempre l'ultima riga a determinare il tipo e il valore restituiti. In questo esempio b sarà uguale a 10:

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

Questo blocco si scrive tra parentesi, e non tra do e end come il corpo di un ciclo o di una funzione. Il codice seguente viene rifiutato già mentre lo si scrive («Simbolo previsto: as»):

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

do … end apre un blocco solo dopo for … in … do, while … do o function f(…) do. Altrove (all'inizio di una formula, dopo :=, dopo then…), do annuncia do as server, do as transaction…: Ninox si aspetta allora la parola as.

Attenzione

Inviata tramite l'API (/query), una query che inizia con do senza as restituisce null, senza alcun messaggio di errore. La trappola si incontra scrivendo una query di prova: (var n := 2; n) restituisce 2, do var n := 2; n end non restituisce nulla.

(Misurato tramite l'API di Ninox.)

Metodi

I metodi sono funzioni che accettano uno o più parametri e restituiscono un valore. Sia i parametri sia il valore restituito sono predefiniti.

Alcuni metodi ammettono più configurazioni di parametri:

  • date(year, month, day)
    Restituisce un valore di tipo data.
  • date(myTimeValue)
    Converte in data un valore legato al tempo. Se il valore è un numero, rappresenta il tempo Unix in millisecondi.

Consultate la documentazione ufficiale di Ninox per l'elenco completo dei metodi e per la loro classificazione per categoria.

Istruzioni

var, if then else, for, switch, select where, ecc. sono istruzioni.

A differenza dei metodi, il tipo restituito dalle istruzioni dipende dal codice che contengono. Per esempio, il codice seguente restituirà un array di numeri [1, 2]:

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