CustomCollector
Class CustomCollector (supplier, accumulator : SomeShit, [finisher : Link = null])
Пользовательский класс коллектора. Принимает на вход три аргумента ссылки на функции или валидные лямбда-выражения.
+

import "..\\mac\\extra\\StreamApi\\Stream.mac";
var filepath = "..\\workfile\\CustomCollector.txt";
var arr = SArray(1, 2, 3, 4, 5);
var resFile = arr.toStream() // Создаем стрим
.collect(CustomCollector(
"TStreamDoc(filepath, 'W', 'utf8')", // Лямбда которая создаст файл
"acc, el -> acc.writeLine(String(el))", // На каждой итерации будет записана строка
"supplyObj -> supplyObj") // Вернем результатом объект TStreamDoc
);
resFile.writeLine("The end"); // Дозапишем в конец еще одну строку
resFile = null;
Успешно скопировано в буфер обмена
Аргументы конструктора класса
supplier
- функция создающая экземпляр класса, в который необходимо будет собрать элементы вида Supply() : Variant.
accumulator
- функция-аккумулятор, добавляет элементы. Функция должна быть вида accumulate(SupplyObj, el).
finisher
- функция-финишер, принимает сборщик и возвращает итоговый результат. Должна быть вида finish(SupplyObj) : Variant.