Тема
Пользовательские функции
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 |