Книги автора: Введение в Python
Описание языка PascalABC.NET
S. D. F.
Справочкик по JavaScript
Справочник по CSS
Справочник по PHP
Справочник по Flash
Язык программирования Euphoria. Справочное руководство
Программирование на Java
Основы программирования на Java
Графика DirectX в Delphi
VBA для чайников
Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil
Фундаментальные алгоритмы и структуры данных в Delphi
Курс "Язык программирования PHP"
Книга: Описание языка PascalABC.NET
Захват переменных в лямбда-выражении
Захват переменных в лямбда-выражении
Лямбда-выражение может использовать переменные из внешнего контекста. Такие переменные называются захваченными лямбда-выражением.
Пример 1. Захват переменной в запросе Select.
begin
var a := Seq(2,3,4);
var z := 1;
var q := a.Select(x->x+z);
q.Println;
z := 2;
q.Println;
end.
Здесь лямбда-выражение x->x+z захватывает внешнюю переменную z. Важно заметить, что при изменении значения переменной z запрос a.Select(x->x+z), хранящийся в переменной q, выполняется с новым значением z.
Пример 2. Накопление суммы во внешней переменной.
begin
var sum := 0;
var AddToSum: integer -> () := procedure (x) -> begin sum += x; end;
AddToSum(1);
AddToSum(3);
AddToSum(5);
writeln(sum);
end.
Оглавление статьи/книги
Похожие страницы
- Значения переменных по умолчанию
- Использование переменных документа
- Просмотр переменных
- Пример 5-1. Вывод "причудливых" переменных
- Применение лямбда-выражения в качестве задачи
- 14.4.2. Хранение переменных окружения в виде массива или хэша
- Захват изображения
- Листинг 7.4. (print-environment.c) Отображение переменных среды процесса
- Регистры для управления каналами захвата
- 4.4.2.1. Отображение переменных FILE* на дескрипторы файлов
- Сохранение и получение значений переменных в Excel, PowerPoint и Project
- Конфликт при захвате блокировки и масштабируемость