Conceptos básicos del lenguaje de Ninox

El lenguaje de script de Ninox sirve para escribir las fórmulas, los botones y los triggers de tus bases de datos. Esta página reúne lo que hay que saber antes de escribir tus primeras líneas.

Ninox es un lenguaje tipado y precompilado. Es decir, los tipos de datos que maneja el lenguaje se conocen de antemano, a diferencia de otros lenguajes como JavaScript, que pueden manejar variables sin conocer su tipo.

Una de las grandes ventajas de Ninox es que el código que genera resulta especialmente fiable, con fallos que solo se producen en contadas ocasiones.

Para su información, el script de Ninox se compila a JavaScript antes de ejecutarse.

Código anidado y código lineal

Cada función o instrucción devuelve un valor que se puede pasar directamente como parámetro a otra función o instrucción:

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

Así, es posible asignar a una variable un conjunto de código anidado:

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

También se puede asignar a b el resultado de un bloque de código lineal encerrado entre paréntesis:

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

Conviene tener presente que, en el caso del código lineal, la última línea determina siempre el tipo y el valor devueltos. En este ejemplo, b valdrá 10:

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

Este bloque se escribe entre paréntesis, y no entre do y end como el cuerpo de un bucle o de una función. El código siguiente se rechaza en cuanto se escribe («Símbolo esperado: as»):

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

do … end solo abre un bloque después de for … in … do, while … do o function f(…) do. En cualquier otro lugar (al principio de una fórmula, después de :=, después de then…), do anuncia do as server, do as transaction…: Ninox espera entonces la palabra as.

Atención

Enviada mediante la API (/query), una consulta que empieza por do sin as devuelve null, sin ningún mensaje de error. La trampa aparece al escribir una consulta de prueba: (var n := 2; n) devuelve 2, do var n := 2; n end no devuelve nada.

(Medido mediante la API de Ninox.)

Métodos

Los métodos son funciones que reciben uno o varios parámetros y devuelven un valor. Tanto los parámetros como el valor devuelto están predefinidos.

Algunos métodos admiten varias configuraciones de parámetros:

  • date(year, month, day)
    Devuelve un valor de fecha.
  • date(myTimeValue)
    Convierte en fecha un valor temporal dado. Si el valor es un número, representa el tiempo Unix en milisegundos.

Consulte la documentación oficial de Ninox para ver la lista completa de métodos y su clasificación por categorías.

Instrucciones

var, if then else, for, switch, select where, etc., son instrucciones.

A diferencia de los métodos, el tipo devuelto por una instrucción depende del código que contiene. Por ejemplo, el código siguiente devolverá un array de números [1, 2]:

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