Основы языка Ninox

Язык скриптов Ninox служит для написания формул, кнопок и триггеров ваших баз. На этой странице собрано то, что нужно знать, прежде чем писать первые строки.

Ninox — типизированный и предварительно компилируемый язык. Это значит, что типы обрабатываемых данных известны заранее, в отличие от других языков, например JavaScript, где переменные могут использоваться без знания их типа.

Одно из главных достоинств Ninox — то, что порождаемый им код особенно надёжен: сбои случаются крайне редко.

Отметим, что скрипт Ninox перед выполнением компилируется в JavaScript.

Вложенный и линейный код

Каждая функция или инструкция возвращает значение, которое можно сразу передать параметром в другую функцию или инструкцию:

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

Таким образом, переменной можно присвоить целый набор вложенных вызовов:

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

Можно также присвоить b результат блока линейного кода, заключённого в скобки:

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

Важно помнить, что в линейном коде тип и возвращаемое значение всегда определяет последняя строка. В этом примере b будет равно 10:

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

Такой блок записывается в скобках, а не между do и end, как тело цикла или функции. Следующий код отклоняется уже при написании («Ожидается символ: as»):

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

do … end открывает блок только после for … in … do, while … do или function f(…) do. Во всех остальных местах (в начале формулы, после :=, после then…) do начинает do as server, do as transaction…: Ninox ожидает тогда слово as.

Внимание

Запрос, отправленный через API (/query) и начинающийся с do без as, возвращает null без какого-либо сообщения об ошибке. Ловушка встречается при написании тестового запроса: (var n := 2; n) возвращает 2, do var n := 2; n end не возвращает ничего.

(Измерено через API Ninox.)

Методы

Методы — это функции, которые принимают один или несколько параметров и возвращают значение. И параметры, и возвращаемое значение предопределены.

У некоторых методов бывает несколько наборов параметров:

  • date(year, month, day)
    Возвращает значение-дату.
  • date(myTimeValue)
    Преобразует заданное значение, связанное со временем, в дату. Если значение — число, оно означает время Unix в миллисекундах.

Полный список методов и их распределение по категориям см. в официальной документации Ninox.

Инструкции

var, if then else, for, switch, select where и т. д. — это инструкции.

В отличие от методов, тип возвращаемого значения инструкции зависит от содержащегося в ней кода. Например, следующий код вернёт массив чисел [1, 2]:

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