Библиотека предоставляет объект-контейнер, который может содержать какое-либо значение или быть "пустым". Над контейнером можно выполнять операции в функциональном стиле, аналогично библиотеке fluent.
Функции фильтрации и обработки могут задаваться с помощью "Действий" и Строк (библиотека lambdas)
// Конструктор объекта.
//
// Параметры:
// Объект - Произвольный - Значение, которое необходимо упаковать в Опциональный.
// ДопустимоНеопределено - Булево - Флаг допустимости упаковывания значения "Неопределено".
//
Процедура ПриСозданииОбъекта(Объект, ДопустимоНеопределено = Ложь)
// Проверка незаполненности значения в Опциональный.
//
// Возвращаемое значение:
// Булево
//
Функция Пустой()
// Проверка заполненности значения в Опциональный.
//
// Возвращаемое значение:
// Булево
//
Функция СодержитЗначение()
// Выполнить действие над значением, если оно существует.
//
// Параметры:
// ФункцияОбработки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть результат обработки
// - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть результат обработки
//
// Возвращаемое значение:
// Опциональный - Обработанное значение, упакованное в Опциональный.
//
Функция Обработать(ФункцияОбработки)
// Выполнить действие, возвращающее другой Опциональный, над значением, если оно существует.
//
// Параметры:
// ФункцияРазвертки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть новый Опциональный с результатом развертки
// - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть новый Опциональный с результатом развертки
//
// Выбрасывает исключение:
// - Если функция развертки вернула значение, отличное от Опциональный.
//
// Возвращаемое значение:
// Опциональный - Обработанное значение.
//
Функция Развернуть(ФункцияРазвертки)
// Выполнить действие фильтрации над значением, если оно существует.
//
// Параметры:
// ФункцияФильтрации - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру
// - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру
//
// Возвращаемое значение:
// Опциональный - Отфильтрованное значение, упакованное в Опциональный.
// Пустой Опциональный, если функция фильтрации вернула Ложь, иначе этот же экземпляр Опциональный.
//
Функция Фильтровать(ФункцияФильтрации)
// Выполнить действие над значением, если оно существует.
//
// Параметры:
// ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект
// - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект
//
Процедура ЕслиСодержитЗначение(ФункцияОбработки)
// Выполнить действие над значением, если оно существует, или выполнить другое действие, если значение не существует.
//
// Параметры:
// ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект
// - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект
// ФункцияОбработкиИначе - Действие - Делегат на процедуру без параметров
// - Строка - Лямбда выражение процедура без параметров
//
Процедура ЕслиСодержитЗначениеИначе(ФункцияОбработки, ФункцияОбработкиИначе)
// Выполнить действие по расчету нового Опциональный, если текущий экземпляр Опциональный содержит пустое значение.
//
// Параметры:
// ФункцияСоздания - Действие - Делегат на функцию без параметров
// - Строка - Лямбда выражение функция без параметров
//
// Возвращаемое значение:
// Опциональный - Новое значение, упакованное в Опциональный,
// если текущий экземпляр Опциональный содержит пустое значение.
// Текущий экземпляр Опциональный, если он содержал значение.
//
Функция Или_(ФункцияСоздания)
// Возвращает ПроцессорКоллекций, содержащий 0 или 1 элемент. Если экземпляр Опциональный содержит значение,
// то ПроцессорКоллекций будет содержать это распакованное значение.
//
// Возвращаемое значение:
// ПроцессорКоллекций - ПроцессорКоллекций, содержащий распакованное значение Опциональный, если оно было заполнено.
// Пустой ПроцессорКоллекций, если экземпляр Опциональный не содержал значение.
//
Функция ПроцессорКоллекций()
// Получить значение, содержащееся в экземпляре Опциональный.
//
// Выбрасывает исключение:
// - Если экземпляр Опциональный не содержит значение.
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный.
//
Функция Получить()
// Получить значение, содержащееся в экземпляре Опциональный, или переданное значение,
// если экземпляр Опциональный пустой.
//
// Параметры:
// ЗначениеИначе - Произвольный - Значение, которое должна вернуть функция, если текущий экземпляр Опциональный
// не содержит значение.
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный, или переданное значение.
//
Функция Иначе_(ЗначениеИначе)
// Получить значение, содержащееся в экземпляре Опциональный, или вычислить новое значение,
// если экземпляр Опциональный пустой.
//
// Параметры:
// ФункцияПолученияЗначения - Действие - Делегат на функцию без параметров
// - Строка - Лямбда выражение функция без параметров
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный,
// или результат переданной функции получения значения.
//
Функция ИначеПолучить(ФункцияПолученияЗначения)
// Получить значение, хранящееся в экземпляре Опциональный, или выбросить исключение с переданной информацией об ошибке.
//
// Параметры:
// ИнформацияОбОшибке - ИнформацияОбОшибке - Данные исключения, которое необходимо выбросить, если Опциональный
// содержит пустое значение.
//
// Выбрасывает исключение:
// - Если экземпляр Опциональный не содержит значение.
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный.
//
Функция ИначеВызватьИсключение(ИнформацияОбОшибке)