Перейти к содержимому

Пользовательские функции

LAMBDA, LET и ISOMITTED — это языковые конструкции, а не обычные функции. Они позволяют создавать собственные функции, связывать промежуточные значения с именами и поддерживать необязательные параметры.

LAMBDA

LAMBDA([параметры...]; вычисление)

Создаёт пользовательскую функцию (лямбду) из набора параметров и тела вычисления.

  • Лямбду можно вызвать сразу — LAMBDA(x; x+1)(5).
  • Или передать в функции высшего порядка — BYROW, BYCOL, MAP, REDUCE, SCAN.
  • Имена параметров регистронезависимы и не должны конфликтовать с именами столбцов в текущем диапазоне.

Примеры

ФормулаРезультат
LAMBDA(x; x+1)(5)6
LAMBDA(c; c*9/5+32)(100)212 (Цельсий → Фаренгейт)
MAP({1;2;3}; LAMBDA(n; n*n)){1;4;9}

LET

LET(имя1; значение1; [имя2; значение2; ...]; вычисление)

Связывает имена со значениями и вычисляет финальное выражение в их контексте.

  • Имя может ссылаться на ранее объявленные переменные в том же LET.
  • Удобно для повторного использования промежуточных вычислений и улучшения читаемости длинных формул.
  • Имена регистронезависимы.

Примеры

ФормулаРезультат
LET(x; 5; x*2)10
LET(x; 5; y; 10; x+y)15
LET(x; 9; y; КОРЕНЬ(x); x+y-1)11

ISOMITTED

ISOMITTED(параметр)

Возвращает TRUE, если параметр LAMBDA не был передан при вызове, и FALSE иначе. Используется для поддержки необязательных параметров внутри LAMBDA.

  • Принимает только прямую ссылку на параметр. Строковые литералы и выражения возвращают FALSE.
  • Пустая строка "", ноль и FALSE — это значения, а не отсутствие аргумента: ISOMITTED для них вернёт FALSE.

Примеры

ФормулаРезультат
LAMBDA(x; ЕСЛИ(ISOMITTED(x); 10; x))()10
LAMBDA(x; ЕСЛИ(ISOMITTED(x); 10; x))(42)42
LAMBDA(a; b; ЕСЛИ(ISOMITTED(b); a; a+b))(5)5
Была ли эта страница полезной?