Язык формул Creatium спроектирован таким образом, чтобы его можно было быстро освоить и начать использовать за максимально короткий период времени, при этом он дает большие возможности для работы с данными, которые никак иначе не доступны.
В этой статье мы разберем основы формул.
Целые числа: 123
, -34
, 0
и т.д.
Дробные числа: 10.22
, 0.01
и т.д.
Поддерживается математическая запись для очень больших и очень маленьких чисел:
1.602176565e-19
, 6.02214129e+23
и т.д.
Заключаются в одинарные ('
) или в двойные кавычки ("
). Разного рода типографские кавычки (вроде ‘
, ’
, ‟
, ”
, и т.д.) не принимаются.
Примеры: "Hello!"
, "123"
, 'Test'
и т.д.
Если внутри строки встречается такая же кавычка, как та, что используется для формирования строки, перед ней нужно поставить знак \
.
Пример: "Это просто \"чудо\" какое-то"
. Или заключить строку в кавычки другого типа, чтобы не было конфликта кавычек одного типа: 'Это просто "чудо" какое-то'
.
Или true
или false
, всего 2 возможных значения. Обычно true
означает нечто положительное, а false
— нечто отрицательное. Да/нет, включено/выключено, в наличии/отсутвует и так далее.
Массив или список — это набор значений, разделенных запятыми, заключенный в квадратные скобки: [1, 2, 3]
, ["a", "b", "c"]
и т.д.
Массив может содержать значения разных типов: [1, "b", false]
, включая вложенные массивы: [1, [12, 13], ["a", "b"]]
.
Объект — это набор пар ключ-значение, разделенных запятыми, заключенный в фигурные скобки. Значение может быть любого типа, а ключем может быть только строка. Между ключем и значением всегда ставится двоеточие: {"x": 12, "y": 44}
, {"type": "house", "price": 1200}
и т.д.
Если в названии ключа используются только латинские буквы, цифры (но не в самом начале) и символ _
, то ключ можно не заключать в скобки: {name: "Hohn", age: 34}
.
Как и массивы, объекты могут содержать другие вложенные объекты. Ключи в объекте не должны повторяться, но если такое случается, то “верным” значением считается последнее. То есть в объекте {x: 1, x: 2}
значением ключа x
будет 2
.
Даты записываются между двумя знаками #
, в формате “год-месяц-день”: #2022-04-22#
, #1994-05-04#
и т.д. Ведущий ноль обязателен, то есть #1994-5-4#
это уже неправильный формат.
Дата может включать так же и время:
#2022-04-22 14:05#
#2022-04-22 14:05:15#
(с секундами)
#2022-04-22 14:05:15.245#
(с миллисекундами)
Если не указано иное, то по умолчанию используется время по Гринвичу. Можно дополнительно указать и часовой пояс:
#2022-04-22 14:30 +05#
(Нью-Йорк)
#2022-04-22 14:30 -03#
(Москва)
Можно указать часовой пояс, опустив время:
#2022-04-22 -03#
(00:00 по Москве)
`#2022-04#` (только год и месяц, то же что `#2022-04-01 00:00#`)
`#2022-07-02T15:22:35.313Z#` (формат ISO 8601)
`#2022-04-22 14:30:15 -09:30#` (часовой пояс с минутами**)**
Означает отсутствующее значение. Единственным возможным значением этого типа данных является null
.
Переменные обеспечивают доступ к значениям, которые могут меняться. Переменная может содержать значение любого типа — число, объект, массив, дату и т.д.
Название переменной может содержать латинские буквы, цифры и знак “_”, но не может начинаться с цифры. Несколько примеров названий переменных: memberId
, url
, test123
.
Если в переменной хранится массив, доступ к элементам осуществляется следующим образом: array[0]
, где 0
это номер элемента.
Обратите внимание, что нумерация начинается с 0! Первый элемент, это элемент под номером 0, второй элемент под номером 1 и так далее.
Допустим, у нас есть переменная prices
, содержащая массив [25, 33, 11]
. Получить второе значение массива можно следующим образом: prices[1]
.
Так же есть удобный способ получения последнего элемента: prices[-1]
, то есть при использовании отрицательного номера, элементы считаются с конца.
Похожим образом осуществляется и доступ к значениям объекта, только вместо номера в квадратных скобках мы передаем строку: object["a"]
, где "a"
это ключ.
Допустим, у нас есть переменная man
, которая содержит объект { "firts name": "John", "age": 34 }
. Получить значение “first name” этого объекта можно следующим образом: man["first name"]
.
А так получаем значение “age”: man["age"]
. Если ключ содержит только латинские буквы, цифры и символ “_”, то синтаксис можно упростить: man.age
.
Оператор — это простейшая конструкция языка.
Порядок операций важен, но можно использовать скобки:
Оператор сложения нельзя использовать со строками. Для этого есть специальный оператор объединения строк (&).
Оба оператора умеют работать с датой. В этом случае они прибавляют или вычитают миллисекунды.
В сутках 86400000 миллисекунд (1000 миллисекнуд * 60 секунд * 60 минут * 24 часа), так можно прибавлять или вычитать дни:
Приоритет умножения и деления выше, чем у сложения, то есть умножение всегда выполняется первым.
Но тут тоже можно использовать скобки:
Оператор “равно”: ==
Оператор “не равно”: !=
Оператор “больше”: >
Оператор “больше или равно”: >=
Работает как оператор “больше”, но допускает так же равенство.
Оператор “меньше”: <
Оператор “больше или равно”: >=
Работает как оператор “меньше”, но допускает так же равенство.
Возвращает true если И левое И правое выражение равняются true.
Возвращает true если левое ИЛИ правое выражение равняются true.
Позволяет указать значение, которое будет использована, если переменная, элемент массива или свойство объекта равно null.
Этот оператор удобно использовать при обращении к элементам массивов или значениям объектов, которых может не существовать.
Список функций смотрите во вложенной статье.
В код формулы можно вставлять комментарии двумя способами.
Первый — конструкция /* комментарий */
, которая может быть многострочной, а может занимать только часть строки.
Пример:
myDate + /* сутки */ 86400000
Часть кода /* сутки */
будет проигнорирована при выполнении формулы.
Второй — кострукция // комментарий
, которая превращает в комментарий всю оставшуюся часть строки, и которую удобно использовать при перечислении элементов массива или значений объектов.
Пример:
sum([
10,
20,
// 30,
40,
])
В данном случае мы “закомментировали” третий элемент массива, и он не будет учитываться при сложении.
Работает на Creatium