Informations générales
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
);
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;
