CustomCollector

Class CustomCollector (supplier, accumulator : SomeShit, [finisher : Link = null])

Пользовательский класс коллектора. Принимает на вход три аргумента ссылки на функции или валидные лямбда-выражения.

+

copy sample
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;
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.