Библиотека быстрой обработки коллекций.
Позволяет в "текучем" стиле обрабатывать коллекции - фильтровать, упорядочивать, выполнять операции над элементы, получать результат в виде заданного типа и др.
Поддержка строк, массивов, таблиц значений, деревьев значений.
Структуры и соответствия incoming
Конвейерные методы:
- Первые
- Пропустить
- Различные
- Обработать
- Развернуть
- Фильтровать
- Сортировать
- СортироватьПо
Терминальные методы:
- ПолучитьПервый
- ВМассив
- ВСтроку
- Количество
- ДляКаждого
- Минимум
- Максимум
- Сократить
- Получить
- ЛюбойСоответствует
- ВсеСоответствуют
- ВсеНеСоответствуют
Функции сравнения, фильтрации, обработки могут задаваться с помощью:
- Строк библиотека lambdas
- Действие
Библиотека помимо конструктора класса ПроцессорКоллекций
содержит вспомогательный модуль, включающий:
- построитель процессора коллекций
ИзКоллекции()
- построитель процессора коллекций
ИзСтроки()
- построитель процессора коллекций
ИзНабора()
СтандартнаяФункцияСравненияПрямойПорядок()
- типовойcomparator
, возвращающий результат сравнения как1
,0
,-1
Массив = Новый Массив;
Массив.Добавить(3);
Массив.Добавить(4);
Массив.Добавить(7);
Массив.Добавить(5);
Массив.Добавить(1);
Массив.Добавить(0);
Результат = ПроцессорыКоллекций.ИзКоллекции(Массив)
.Пропустить(1)
.Фильтровать("Элемент -> Элемент >= 5")
.Первые(2)
.Обработать("Элемент -> Элемент + 1")
.Получить(Тип("Массив"));
// На выходе массив [8, 6]
Тоже самое с помощью Действие
:
Функция ОбработчикФильтрации(Элемент) Экспорт
Возврат Элемент >= 5;
КонецФункции
Функция ОбработчикОбработки(Элемент) Экспорт
Результат = Элемент + 1;
Сообщить("Я - операция map, и это мое послание миру: элемент " + Элемент + " превратился в " + Результат);
Возврат Результат;
КонецФункции
ФункцияФильтрации = Новый Действие(ЭтотОбъект, "ОбработчикФильтрации");
ФункцияОбработки = Новый Действие(ЭтотОбъект, "ОбработчикОбработки");
Результат = ПроцессорыКоллекций.ИзКоллекции(Массив)
.Пропустить(1)
.Фильтровать(ФункцияФильтрации)
.Первые(2)
.Обработать(ФункцияОбработки)
.Получить(Тип("Массив"));
Массив = Новый Массив;
Массив.Добавить(4);
Массив.Добавить(2);
Массив.Добавить(2);
Массив.Добавить(3);
Массив.Добавить(3);
Массив.Добавить(3);
ПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Массив);
ПроцессорКоллекций
.Различные()
.Сортировать()
.ДляКаждого("Элемент -> Сообщить(Элемент)");
// На выходе сообщения в консоль:
// 2
// 3
// 4
Строка = "Я
|строка
|многострочная";
ПроцессорыКоллекций
.ИзСтроки(Строка, Символы.ПС)
.Фильтровать("Элемент -> СтрДлина(Элемент) > 1")
.ДляКаждого("Элемент -> Сообщить(Элемент)");
// На выходе сообщения в консоль:
// многострочная
// строка
Больше примеров работы в каталогах examples
и tests
.
Общее API
// Устанавливает коллекцию для обработки Процессора коллекций.
//
// Параметры:
// НоваяКоллекция - Массив, ТаблицаЗначений, ДеревоЗначений - Коллекция, устанавливаемая в процессор.
//
Процедура УстановитьКоллекцию(НоваяКоллекция)
// Включает возможность отладки. Достигается сохранением текста модуля во временный файл.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Ссылка на текущий инстанс ПроцессорКоллекций
//
Функция Отладка(Включена = Истина)
Конвейерные методы
// Получить первые N элементов.
// Конвейерный метод.
//
// Параметры:
// Количество - Число - Число отбираемых элементов.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
Функция Первые(Количество)
// Пропустить первые N элементов.
// Конвейерный метод.
//
// Параметры:
// Количество - Число - Число пропускаемых элементов.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
Функция Пропустить(Количество)
// Выбрать различные элементы.
// Конвейерный метод.
//
// Параметры:
// ФункцияРавенства - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,
// и которая возвращает Булево, Истина если элементы равны, Ложь в противном случае
// - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,
// и которая возвращает Булево, Истина если элементы равны, Ложь в противном случае
// - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияРавенства(),
// проверка "Элемент1 = Элемент2"
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
//
// ПроцессорКоллекций = ПроцессорыКоллекций.ИзНабора(
// Новый Структура("Имя, Возраст", "Вася", 25),
// Новый Структура("Имя, Возраст", "Петя", 27),
// Новый Структура("Имя, Возраст", "Ваня", 25)
// );
//
// // 1:
// ПроцессорКоллекций.Различные("(ЧеловекПервый, ЧеловекВторой) -> ЧеловекПервый.Возраст = ЧеловекВторой.Возраст");
//
// // В коллекции останутся: Вася(25) и Петя(27)
//
// // 2:
// Функция МояФункцияФункцияРавенства(ЭлементПервый, ЭлементВторой) Экспорт
// Возврат ЧеловекПервый.Возраст = ЧеловекВторой.Возраст;
// КонецФункции
//
// ПроцессорКоллекций.Различные(Новый Действие(ЭтотОбъект, "МояФункцияФункцияРавенства"));
//
// // В коллекции останутся: Вася(25) и Петя(27)
//
Функция Различные(Знач ФункцияРавенства = Неопределено, Знач ДополнительныеПараметры = Неопределено)
// Обработать каждый элемент коллекции.
// Конвейерный метод.
//
// Параметры:
// ФункцияОбработки - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,
// и которая возвращает новый элемент
// - Действие - Делегат на функцию с одним параметром в который будет передан элемент,
// и которая возвращает новый элемент
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// // 1:
// ПроцессорКоллекций.Обработать("Элемент -> Элемент + 1");
//
// // 2:
// Функция МояФункцияОбработки(Элемент) Экспорт
// Возврат Элемент + 1;
// КонецФункции
//
// ФункцияОбработки = Новый Действие(ЭтотОбъект, "МояФункцияОбработки");
// ПроцессорКоллекций.Обработать(ФункцияОбработки);
//
Функция Обработать(Знач ФункцияОбработки, Знач ДополнительныеПараметры = Неопределено)
// Развернуть каждый элемент коллекции в процессор коллекций.
// Позволяет расширить имеющуюся коллекцию.
// Например, разворачивание массива массивов сделает новый массив, содержащий все элементы всех массивов.
// Конвейерный метод.
//
// Параметры:
// ФункцияРазворачивания - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,
// и которая возвращает ПроцессорКоллекций из элемента
// - Действие - Делегат на функцию с одним параметром в который будет передан элемент,
// и которая возвращает ПроцессорКоллекций из элемента
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// // 1:
// ПроцессорКоллекций.Развернуть("Элемент -> ПроцессорыКоллекций.ИзСтроки(Элемент)");
//
// // 2:
// Функция МояФункцияРазворачивания(Элемент) Экспорт
// Возврат ПроцессорыКоллекций.ИзСтроки(Элемент);
// КонецФункции
//
// ФункцияРазворачивания = Новый Действие(ЭтотОбъект, "МояФункцияРазворачивания");
// ПроцессорКоллекций.Развернуть(ФункцияРазворачивания);
//
Функция Развернуть(Знач ФункцияРазворачивания, Знач ДополнительныеПараметры = Неопределено)
// Фильтровать коллекцию по условию.
// Конвейерный метод.
//
// Параметры:
// ФункцияФильтрации - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
// - Действие - Делегат на функцию с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// // 1:
// ПроцессорКоллекций.Фильтровать("Элемент -> СтрДлина(Элемент) > 1");
//
// // 2:
// Функция МояФункцияФильтрации(Результат, ДополнительныеПараметры) Экспорт
// Возврат СтрДлина(ДополнительныеПараметры.Элемент) > 1;
// КонецФункции
//
// ФункцияФильтрации = Новый Действие(ЭтотОбъект, "МояФункцияФильтрации");
// ПроцессорКоллекций.Фильтровать(ФункцияФильтрации);
//
Функция Фильтровать(Знач ФункцияФильтрации, Знач ДополнительныеПараметры = Неопределено)
// Сортировать элементы коллекции.
// Конвейерный метод.
//
// Параметры:
// ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),
// проверка через ">", "<", "="
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// // 1:
// ПроцессорКоллекций.Сортировать("(Первый, Второй) ->
// | Если Первый > Второй Тогда Возврат 1;
// | ИначеЕсли Второй > Первый Тогда Возврат -1;
// | Иначе Возврат 0;
// | КонецЕсли;"
// );
//
// // 2:
// Функция МояФункцияСравнения(Первый, Второй) Экспорт
// Если Первый > Второй Тогда
// Возврат 1;
// ИначеЕсли Второй > Первый Тогда
// Возврат -1;
// Иначе
// Возврат 0;
// КонецЕсли;
// КонецФункции
//
// ФункцияСравнения = Новый Действие(ЭтотОбъект, "МояФункцияСравнения");
// ПроцессорКоллекций.Сортировать(ФункцияСравнения);
//
Функция Сортировать(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено)
// Сортировать элементы коллекции по выбранному полю.
// Конвейерный метод.
//
// Параметры:
// ИмяПоля - Строка - Имя поля элемента коллекции, по которому необходимо осуществлять сортировку.
//
// ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),
// проверка через ">", "<", "="
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса "ПроцессорКоллекций".
//
// Примеры:
// // 1:
// ПроцессорКоллекций.СортироватьПо("НомерСтроки", "(Первый, Второй) ->
// | Если Первый > Второй Тогда Возврат 1;
// | ИначеЕсли Второй > Первый Тогда Возврат -1;
// | Иначе Возврат 0;
// | КонецЕсли;"
// );
//
// // 2:
// Функция МояФункцияСравнения(Первый, Второй) Экспорт
// Если Первый > Второй Тогда
// Возврат 1;
// ИначеЕсли Второй > Первый Тогда
// Возврат -1;
// Иначе
// Возврат 0;
// КонецЕсли;
// КонецФункции
//
// ФункцияСравнения = Новый Действие(ЭтотОбъект, "МояФункцияСравнения");
// ПроцессорКоллекций.СортироватьПо("НомерСтроки", ФункцияСравнения);
//
Функция СортироватьПо(Знач ИмяПоля, Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено)
Терминальные методы
// Получить первый элемент.
// Терминальный метод.
//
// Возвращаемое значение:
// Произвольный - Первый элемент из коллекции. Если коллекция пуста, возвращает Неопределено.
//
Функция ПолучитьПервый()
// Получить коллекцию в виде массива.
// Терминальный метод.
//
// Возвращаемое значение:
// Массив - Массив элементов коллекции.
//
Функция ВМассив()
// Получить коллекцию в виде строки.
// Терминальный метод.
//
// Параметры:
// РазделительСтрок - Строка - Используемый разделитель между элементами при конкатенации строк.
//
// Возвращаемое значение:
// Строка - Элементы коллекции, соединенные в строку методом конкатенации.
//
Функция ВСтроку(РазделительСтрок = "")
// Получить количество элементов коллекции.
// Терминальный метод.
//
// Возвращаемое значение:
// Число - Количество элементов коллекции.
//
Функция Количество()
// Обработать каждый элемент коллекции и завершить работу процессора.
// Терминальный метод.
//
// Параметры:
// ФункцияОбработки - Строка - Лямбда выражение процедура с одним параметром в который будет передан элемент
// - Действие - Делегат на процедуру с одним параметром в который будет передан элемент
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Примеры:
// // 1:
// ПроцессорКоллекций.ДляКаждого("Элемент -> Сообщить(Элемент);");
//
// // 2:
// Процедура МояПроцедураОбработки(Элемент) Экспорт
// Сообщить(Элемент);
// КонецПроцедуры
//
// ПроцедураОбработки = Новый Действие(ЭтотОбъект, "МояПроцедураОбработки");
// ПроцессорКоллекций.ДляКаждого(ПроцедураОбработки);
//
Процедура ДляКаждого(Знач ФункцияОбработки, Знач ДополнительныеПараметры = Неопределено)
// Получить минимальный элемент.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),
// проверка через ">", "<", "="
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// Произвольный - минимальный элемент коллекции.
//
// Примеры:
// // 1:
// ПроцессорКоллекций.Минимум();
//
// // 2:
// ПроцессорКоллекций.Минимум("(Первый, Второй) ->
// | Если Первый > Второй Тогда Возврат 1;
// | ИначеЕсли Второй > Первый Тогда Возврат -1;
// | Иначе Возврат 0;
// | КонецЕсли;"
// );
//
// // 3:
// Функция МояФункцияСравнения(Первый, Второй) Экспорт
// Если Первый > Второй Тогда
// Возврат 1;
// ИначеЕсли Второй > Первый Тогда
// Возврат -1;
// Иначе
// Возврат 0;
// КонецЕсли;
// КонецФункции
//
// ФункцияСравнения = Новый Действие(ЭтотОбъект, "МояФункцияСравнения");
// ПроцессорКоллекций.Минимум(ФункцияСравнения);
//
Функция Минимум(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено)
// Получить максимальный элемент.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Действие - Делегат на функцию с двумя параметрами, в которые будут переданы два элемента,
// и которая возвращает Число, 1 - если первый элемент больше, -1 если второй элемент больше, 0 - если элементы равны
// - Неопределено - см. ПроцессорыКоллекций.СтандартнаяФункцияСравненияПрямойПорядок(),
// проверка через ">", "<", "="
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// Произвольный - максимальный элемент коллекции.
//
// Примеры:
// // 1:
// ПроцессорКоллекций.Максимум();
//
// // 2:
// ПроцессорКоллекций.Максимум("(Первый, Второй) ->
// | Если Первый > Второй Тогда Возврат 1;
// | ИначеЕсли Второй > Первый Тогда Возврат -1;
// | Иначе Возврат 0;
// | КонецЕсли;"
// );
//
// // 3:
// Функция МояФункцияСравнения(Первый, Второй) Экспорт
// Если Первый > Второй Тогда
// Возврат 1;
// ИначеЕсли Второй > Первый Тогда
// Возврат -1;
// Иначе
// Возврат 0;
// КонецЕсли;
// КонецФункции
//
// ФункцияСравнения = Новый Действие(ЭтотОбъект, "МояФункцияСравнения");
// ПроцессорКоллекций.Максимум(ФункцияСравнения);
//
Функция Максимум(Знач ФункцияСравнения = Неопределено, Знач ДополнительныеПараметры = Неопределено)
// Выполнить агрегатную функцию над элементами коллекции.
// Терминальный метод.
//
// Параметры:
// ФункцияСокращения - Строка - Лямбда выражение функция с двумя параметрами в которые будут переданы
// результат аккумулятор и очередной элемент коллекции, и которая возвращает новое значение результата
// - Действие - Делегат на функцию с двумя параметрами в которые будут переданы
// результат аккумулятор и очередной элемент коллекции, и которая возвращает новое значение результата
//
// НачальноеЗначение - Произвольный - начальное значение, передаваемое в функцию сокращения в параметр "Результат"
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// Произвольный - результат работы агрегатной функции.
//
// Примеры:
// 2:
// ПроцессорКоллекций.Сократить("Результат, Элемент -> Результат + Элемент", 0);
//
// 2:
// Функция МояФункцияСокращения(Результат, Элемент) Экспорт
// Возврат Результат + Элемент;
// КонецФункции
//
// ФункцияСокращения = Новый Действие(ЭтотОбъект, "МояФункцияСокращения");
// ПроцессорКоллекций.Сократить(ФункцияСокращения);
//
Функция Сократить(Знач ФункцияСокращения, Знач НачальноеЗначение = Неопределено, Знач ДополнительныеПараметры = Неопределено)
// Получить коллекцию в виде объекта заданного типа.
// Терминальный метод.
//
// Параметры:
// ТипРезультата - Тип - Тип, в котором необходимо вернуть коллекцию.
//
// Возвращаемое значение:
// Произвольный - Коллекция в виде объекта нужного типа.
//
Функция Получить(ТипРезультата)
// Проверить, что хотя бы один элемент коллекции удовлетворяет условию в функции сравнения.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
// - Действие - Делегат на функцию с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// Булево - Истина, если минимум один из элементов коллекции удовлетворяет условию Функции сравнения.
// В обратном случае возвращает Ложь.
// Если коллекция пустая, возвращает Ложь.
//
Функция ЛюбойСоответствует(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено)
// Проверить, что все элементы коллекции удовлетворяют условию в функции сравнения.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
// - Действие - Делегат на функцию с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// Булево - Истина, если все элементы коллекции удовлетворяют условию Функции сравнения.
// В обратном случае возвращает Ложь.
// Если коллекция пустая, возвращает Истина.
//
Функция ВсеСоответствуют(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено)
// Проверить, что все элементы коллекции не удовлетворяют условию в функции сравнения.
// Терминальный метод.
//
// Параметры:
// ФункцияСравнения - Строка - Лямбда выражение функция с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
// - Действие - Делегат на функцию с одним параметром в который будет передан элемент,
// и которая возвращает Булево, Истина если элемент проходит фильтр, ложь в противном случае
//
// ДополнительныеПараметры - Структура - Контекст добавляемый в лямбда выражение,
// значения будут доступны по обращению к ключу как к переменной.
// При передачи действия в первом параметре, этот параметр игнорируется
// - Сценарий - Экземпляр объекта, который будет захвачен в лямбда выражение,
// в лямбда выражении будет доступен контекст (публичные и приватные поля, публичные методы) объекта.
// При передачи действия в первом параметре, этот параметр игнорируется
//
// Возвращаемое значение:
// Булево - Истина, если все элементы коллекции не удовлетворяют условию Функции сравнения.
// В обратном случае возвращает Ложь.
// Если коллекция пустая, возвращает Истина.
//
Функция ВсеНеСоответствуют(Знач ФункцияСравнения, Знач ДополнительныеПараметры = Неопределено)
// Создать ПроцессорКоллекций на основании переданной коллекции.
//
// Параметры:
// Коллекция - Произвольный - Коллекция (Массив, ТаблицаЗначений...), на основании которой нужно
// сформировать ПроцессорКоллекций.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданной коллекцией.
//
Функция ИзКоллекции(Коллекция) Экспорт
// Создать ПроцессорКоллекций на основании переданной строки.
// Переданная строка преобразуется в коллекцию путем разделения строк.
//
// Параметры:
// Строка - Строка - Строка, на основании которой нужно сформировать ПроцессорКоллекций.
// РазделительСтрок - Строка - Разделитель строк, применяемый к Строке для получения коллекции.
// Если не передан, строка разделяется на элементы посимвольно.
// ВключатьПустые - Булево - Указывает необходимость включать в коллекцию пустые строки,
// которые могут образоваться в результате разделения исходной строки.
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций.
//
Функция ИзСтроки(Строка, РазделительСтрок = Неопределено, ВключатьПустые = Истина) Экспорт
// Создать ПроцессорКоллекций на основании переданного набора значений.
// Добавляет элемент в ПроцессорКоллекций, если он не равен NULL.
//
// Параметры:
// Элемент1 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
// Элемент2 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
// Элемент3 - Произвольный - Элемент для добавления в ПроцессорКоллекций.
// ... Всего 32 параметра ...
//
// Возвращаемое значение:
// ПроцессорКоллекций - Инстанс класса ПроцессорКоллекций, заполненный переданным набором.
//
Функция ИзНабора(Элемент1 = NULL, Элемент2 = NULL, Элемент3 = NULL, ...) Экспорт
// Стандартная функция сравнения.
// Сравнивает значения элементов коллекции через операторы ">", "<" и "=".
//
// Возвращаемое значение:
// Действие - Делегат на стандартный метод сравнения
//
Функция СтандартнаяФункцияСравненияПрямойПорядок()
// Стандартная функция сравнения в обратном порядке
// Сравнивает значения элементов коллекции через операторы ">", "<" и "=".
//
// Возвращаемое значение:
// Действие - Делегат на стандартный метод сравнения в обратном порядке
//
Функция СтандартнаяФункцияСравненияОбратныйПорядок()
// Стандартная функция проверки на равенство
// Сравнивает значения элементов коллекции через "=".
//
// Возвращаемое значение:
// Действие - Делегат на стандартный метод проверки на равенство
//
Функция СтандартнаяФункцияРавенства()
Для того, что бы работал отладчик и заходил в добавленные методы нужно: Либо установить любое значение переменной окружения с именем OSCRIPT_FLUENT_DEBUG
. Либо вызвать метод Отладка()
Вдохновение черпалось из java8 stream-api.