/optional

Primary Language1C EnterpriseMIT LicenseMIT

Optional

Библиотека предоставляет объект-контейнер, который может содержать какое-либо значение или быть "пустым". Над контейнером можно выполнять операции в функциональном стиле, аналогично библиотеке fluent.

Функции фильтрации и обработки могут задаваться с помощью "Действий" и Строк (библиотека lambdas)

Опциональный

ПриСозданииОбъекта

// Конструктор объекта.
//
// Параметры:
//   Объект - Произвольный - Значение, которое необходимо упаковать в Опциональный.
//   ДопустимоНеопределено - Булево - Флаг допустимости упаковывания значения "Неопределено".
//
Процедура ПриСозданииОбъекта(Объект, ДопустимоНеопределено = Ложь) 

Пустой

// Проверка незаполненности значения в Опциональный.
//
//  Возвращаемое значение:
//   Булево
//
Функция Пустой() 

СодержитЗначение

// Проверка заполненности значения в Опциональный.
//
//  Возвращаемое значение:
//   Булево
//
Функция СодержитЗначение() 

Обработать

// Выполнить действие над значением, если оно существует.
//
// Параметры:
//   ФункцияОбработки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
//    и которая должна вернуть результат обработки
//                    - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
//    и которая должна вернуть результат обработки
//
//  Возвращаемое значение:
//   Опциональный - Обработанное значение, упакованное в Опциональный.
//
Функция Обработать(ФункцияОбработки) 

Развернуть

// Выполнить действие, возвращающее другой Опциональный, над значением, если оно существует.
//
// Параметры:
//   ФункцияРазвертки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
//    и которая должна вернуть новый Опциональный с результатом развертки
//                    - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
//    и которая должна вернуть новый Опциональный с результатом развертки
//
//  Выбрасывает исключение:
//    - Если функция развертки вернула значение, отличное от Опциональный.
//
//  Возвращаемое значение:
//   Опциональный - Обработанное значение.
//
Функция Развернуть(ФункцияРазвертки) 

Фильтровать

// Выполнить действие фильтрации над значением, если оно существует.
//
// Параметры:
//   ФункцияФильтрации - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
//    и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру
//                    - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
//    и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру
//
//  Возвращаемое значение:
//   Опциональный - Отфильтрованное значение, упакованное в Опциональный.
//		Пустой Опциональный, если функция фильтрации вернула Ложь, иначе этот же экземпляр Опциональный.
//
Функция Фильтровать(ФункцияФильтрации) 

ЕслиСодержитЗначение

// Выполнить действие над значением, если оно существует.
//
// Параметры:
//   ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект
//                    - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект
//
Процедура ЕслиСодержитЗначение(ФункцияОбработки) 

ЕслиСодержитЗначениеИначе

// Выполнить действие над значением, если оно существует, или выполнить другое действие, если значение не существует.
//
// Параметры:
//   ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект
//                    - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект
//   ФункцияОбработкиИначе - Действие - Делегат на процедуру без параметров 
//                         - Строка - Лямбда выражение процедура без параметров
//
Процедура ЕслиСодержитЗначениеИначе(ФункцияОбработки, ФункцияОбработкиИначе) 

Или_

// Выполнить действие по расчету нового Опциональный, если текущий экземпляр Опциональный содержит пустое значение.
//
// Параметры:
//   ФункцияСоздания - Действие - Делегат на функцию без параметров 
//                   - Строка - Лямбда выражение функция без параметров
//
//  Возвращаемое значение:
//   Опциональный - Новое значение, упакованное в Опциональный, 
//		если текущий экземпляр Опциональный содержит пустое значение.
//		Текущий экземпляр Опциональный, если он содержал значение.
//
Функция Или_(ФункцияСоздания) 

ПроцессорКоллекций

// Возвращает ПроцессорКоллекций, содержащий 0 или 1 элемент. Если экземпляр Опциональный содержит значение,
//	то ПроцессорКоллекций будет содержать это распакованное значение.
//
//  Возвращаемое значение:
//   ПроцессорКоллекций - ПроцессорКоллекций, содержащий распакованное значение Опциональный, если оно было заполнено.
//		Пустой ПроцессорКоллекций, если экземпляр Опциональный не содержал значение. 
//
Функция ПроцессорКоллекций() 

Получить

// Получить значение, содержащееся в экземпляре Опциональный.
//
//  Выбрасывает исключение:
//    - Если экземпляр Опциональный не содержит значение.
//
//  Возвращаемое значение:
//   Произвольный - Значение, содержавшееся в экземпляре Опциональный.
//
Функция Получить() 

Иначе_

// Получить значение, содержащееся в экземпляре Опциональный, или переданное значение, 
//	если экземпляр Опциональный пустой.
//
// Параметры:
//   ЗначениеИначе - Произвольный - Значение, которое должна вернуть функция, если текущий экземпляр Опциональный
//		не содержит значение.
//
//  Возвращаемое значение:
//   Произвольный - Значение, содержавшееся в экземпляре Опциональный, или переданное значение.
//
Функция Иначе_(ЗначениеИначе) 

ИначеПолучить

// Получить значение, содержащееся в экземпляре Опциональный, или вычислить новое значение, 
//	если экземпляр Опциональный пустой.
//
// Параметры:
//   ФункцияПолученияЗначения - Действие - Делегат на функцию без параметров 
//                            - Строка - Лямбда выражение функция без параметров
//
//  Возвращаемое значение:
//   Произвольный - Значение, содержавшееся в экземпляре Опциональный,
//		или результат переданной функции получения значения.
//
Функция ИначеПолучить(ФункцияПолученияЗначения) 

ИначеВызватьИсключение

// Получить значение, хранящееся в экземпляре Опциональный, или выбросить исключение с переданной информацией об ошибке.
//
// Параметры:
//   ИнформацияОбОшибке - ИнформацияОбОшибке - Данные исключения, которое необходимо выбросить, если Опциональный
//		содержит пустое значение.
//
//  Выбрасывает исключение:
//    - Если экземпляр Опциональный не содержит значение.
//
//  Возвращаемое значение:
//   Произвольный - Значение, содержавшееся в экземпляре Опциональный.
//
Функция ИначеВызватьИсключение(ИнформацияОбОшибке)