Les bases du langage de Ninox
Le langage de script de Ninox sert à écrire les formules, les boutons et les déclencheurs de vos bases. Cette page rassemble ce qu'il faut savoir avant d'écrire vos premières lignes.
Ninox est un langage typé et précompilé. Cela signifie que les types de données manipulés par le langage sont connus à l'avance, contrairement à d'autres langages comme JavaScript, qui peuvent manipuler des variables sans en connaître le type.
L'un des grands avantages de Ninox est que le code produit est particulièrement fiable : les dysfonctionnements n'y surviennent que très rarement.
Pour information, le script Ninox est compilé en JavaScript avant d'être exécuté.
Code imbriqué et code linéaire
Chaque fonction ou instruction renvoie une valeur qui peut être passée directement en paramètre à une autre fonction ou instruction :
var a := format(now(), "DD/MM/YYYY");Il est donc possible d'affecter à une variable un ensemble de code imbriqué :
var a := true;
var b := if a then "true" else "false";Il est également possible d'affecter à b le résultat d'un bloc de code linéaire entouré de parenthèses :
var b := (
var a := true;
if a then "true" else "false" end
);Il est important de garder à l'esprit que, dans le cas d'un code linéaire, la dernière ligne détermine toujours le type et la valeur renvoyés. Dans cet exemple, b vaudra 10 :
var b := (
var a := true;
if a then "true" else "false" end;
10
);Ce bloc s'écrit entre parenthèses, et non entre do et end comme le corps d'une boucle ou d'une fonction. Le code suivant est refusé dès son écriture (« Symbole attendu: as ») :
var b := do
var a := true;
if a then "true" else "false" end
end;do … end n'ouvre un bloc qu'après for … in … do, while … do ou function f(…) do. Partout ailleurs (au début d'une formule, après :=, après then…), do annonce do as server, do as transaction… : Ninox attend alors le mot as.
Attention
Envoyée par l'interface de programmation (/query), une requête qui commence par do sans as renvoie null, sans aucun message d'erreur. Le piège se rencontre en écrivant une requête d'essai : (var n := 2; n) renvoie 2, do var n := 2; n end ne renvoie rien.
(Mesuré par l'interface de programmation de Ninox.)
Méthodes
Les méthodes sont des fonctions qui prennent un ou plusieurs paramètres et renvoient une valeur. Les paramètres comme la valeur de retour sont prédéfinis.
Certaines méthodes admettent plusieurs configurations de paramètres :
date(year, month, day)
Renvoie une valeur de type date.date(myTimeValue)
Convertit en date une valeur temporelle donnée. S'il s'agit d'un nombre, il représente le temps Unix en millisecondes.
Reportez-vous à la documentation officielle de Ninox pour la liste complète des méthodes et leur classement par catégorie.
Instructions
var, if then else, for, switch, select where, etc. sont des instructions.
Contrairement aux méthodes, le type de retour des instructions dépend du code qu'elles contiennent. Par exemple, le code suivant renvoie un tableau de nombres [1, 2] :
for i in range(1,3) do
i;
end;