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:
var a := format(now(), "DD/MM/YYYY");È quindi possibile assegnare a una variabile un insieme di codice annidato:
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:
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:
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»):
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]:
for i in range(1,3) do
i;
end;