Лямбда-выражения
Лямбда-выражение состоит из параметров, лямбда-операции -> и тела лямбда-выражения. Например:
Операнд -> Операнд + 1
(ПервыйПараметр, ВторойПараметр) -> ПервыйПараметр * ВторойПараметр
Так в программном коде может выглядеть значение функционального типа при записи в переменную:
// Переменная c — переменная функционального типа (Число)->Число со значением x->x*x
пер c: (Число)->Число = x -> x * x
а так — при объявлении и вызове метода:
// 3-й аргумент — значение функционального типа (Число, Число)->Булево
Сравнить(2, 3, (x, y) -> x == y)
// Параметр z — параметр функционального типа
метод Сравнить(x: Число, y: Число, z: (Число, Число)->Булево)
;
Лямбда-выражение — функция анонимная, то есть для нее не требуется указывать имя, и в системе она не привязана к идентификатору. Анонимность и компактность лямбда-выражений позволяют записывать весь метод целиком (и параметры, и результат) непосредственно в список параметров другого метода или в тело другого метода как возвращаемое значение.
Синтаксис
Краткая форма
- Один параметр:
параметр -> выражение
- Несколько параметров:
(параметр-1, ..., параметр-N) -> выражение
- Несколько параметров с типом:
(параметр-1: тип-1, ..., параметр-N: тип-N) -> выражение
Примеры:
// Один параметр
x -> x + 1
// Один параметр с типом
(x: Число) -> x + 1
// Два параметра
(x, y) -> x + y
// Два параметра с типом
(x: Число, y: Число) -> x + y
П олная форма
Используется ключевое слово метод.
Тело лямбда-выражения может быть многострочным и заканчивается символом ;.
- Один параметр:
метод(параметр) -> тело лямбда-выражения;
- Несколько параметров:
метод(параметр-1, ..., параметр-N) -> тело лямбда-выражения;
- Несколько параметров с типом:
метод(параметр-1: тип-1, ..., параметр-N: тип-N) -> тело лямбда-выражения;
Примеры:
// Один параметр
метод(x) ->
    возврат x + 1
;
// Один параметр с типом
метод(x: Число) ->
    возврат x + 1
;
// Два параметра
метод(x, y) ->
    возврат x + y
;
// Два параметра с типом
метод(x: Число, y: Число) ->
    возврат x + y
;