https://github.com/nixel2007/optional
https://github.com/nixel2007/optional
Last synced: 4 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/nixel2007/optional
- Owner: nixel2007
- License: mit
- Created: 2021-10-09T11:24:15.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2023-08-15T07:00:06.000Z (almost 3 years ago)
- Last Synced: 2024-12-31T20:16:43.841Z (over 1 year ago)
- Language: 1C Enterprise
- Size: 24.4 KB
- Stars: 6
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Optional
Библиотека предоставляет объект-контейнер, который *может* содержать какое-либо значение или быть "пустым".
Над контейнером можно выполнять операции в функциональном стиле, аналогично библиотеке [fluent](https://github.com/nixel2007/oscript-fluent).
Функции фильтрации и обработки могут задаваться с помощью "Действий" и Строк (библиотека [lambdas](https://github.com/sfaqer/lambdas))
## Опциональный
### ПриСозданииОбъекта
```bsl
// Конструктор объекта.
//
// Параметры:
// Объект - Произвольный - Значение, которое необходимо упаковать в Опциональный.
// ДопустимоНеопределено - Булево - Флаг допустимости упаковывания значения "Неопределено".
//
Процедура ПриСозданииОбъекта(Объект, ДопустимоНеопределено = Ложь)
```
### Пустой
```bsl
// Проверка незаполненности значения в Опциональный.
//
// Возвращаемое значение:
// Булево
//
Функция Пустой()
```
### СодержитЗначение
```bsl
// Проверка заполненности значения в Опциональный.
//
// Возвращаемое значение:
// Булево
//
Функция СодержитЗначение()
```
### Обработать
```bsl
// Выполнить действие над значением, если оно существует.
//
// Параметры:
// ФункцияОбработки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть результат обработки
// - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть результат обработки
//
// Возвращаемое значение:
// Опциональный - Обработанное значение, упакованное в Опциональный.
//
Функция Обработать(ФункцияОбработки)
```
### Развернуть
```bsl
// Выполнить действие, возвращающее другой Опциональный, над значением, если оно существует.
//
// Параметры:
// ФункцияРазвертки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть новый Опциональный с результатом развертки
// - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть новый Опциональный с результатом развертки
//
// Выбрасывает исключение:
// - Если функция развертки вернула значение, отличное от Опциональный.
//
// Возвращаемое значение:
// Опциональный - Обработанное значение.
//
Функция Развернуть(ФункцияРазвертки)
```
### Фильтровать
```bsl
// Выполнить действие фильтрации над значением, если оно существует.
//
// Параметры:
// ФункцияФильтрации - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру
// - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект
// и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру
//
// Возвращаемое значение:
// Опциональный - Отфильтрованное значение, упакованное в Опциональный.
// Пустой Опциональный, если функция фильтрации вернула Ложь, иначе этот же экземпляр Опциональный.
//
Функция Фильтровать(ФункцияФильтрации)
```
### ЕслиСодержитЗначение
```bsl
// Выполнить действие над значением, если оно существует.
//
// Параметры:
// ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект
// - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект
//
Процедура ЕслиСодержитЗначение(ФункцияОбработки)
```
### ЕслиСодержитЗначениеИначе
```bsl
// Выполнить действие над значением, если оно существует, или выполнить другое действие, если значение не существует.
//
// Параметры:
// ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект
// - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект
// ФункцияОбработкиИначе - Действие - Делегат на процедуру без параметров
// - Строка - Лямбда выражение процедура без параметров
//
Процедура ЕслиСодержитЗначениеИначе(ФункцияОбработки, ФункцияОбработкиИначе)
```
### Или_
```bsl
// Выполнить действие по расчету нового Опциональный, если текущий экземпляр Опциональный содержит пустое значение.
//
// Параметры:
// ФункцияСоздания - Действие - Делегат на функцию без параметров
// - Строка - Лямбда выражение функция без параметров
//
// Возвращаемое значение:
// Опциональный - Новое значение, упакованное в Опциональный,
// если текущий экземпляр Опциональный содержит пустое значение.
// Текущий экземпляр Опциональный, если он содержал значение.
//
Функция Или_(ФункцияСоздания)
```
### ПроцессорКоллекций
```bsl
// Возвращает ПроцессорКоллекций, содержащий 0 или 1 элемент. Если экземпляр Опциональный содержит значение,
// то ПроцессорКоллекций будет содержать это распакованное значение.
//
// Возвращаемое значение:
// ПроцессорКоллекций - ПроцессорКоллекций, содержащий распакованное значение Опциональный, если оно было заполнено.
// Пустой ПроцессорКоллекций, если экземпляр Опциональный не содержал значение.
//
Функция ПроцессорКоллекций()
```
### Получить
```bsl
// Получить значение, содержащееся в экземпляре Опциональный.
//
// Выбрасывает исключение:
// - Если экземпляр Опциональный не содержит значение.
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный.
//
Функция Получить()
```
### Иначе_
```bsl
// Получить значение, содержащееся в экземпляре Опциональный, или переданное значение,
// если экземпляр Опциональный пустой.
//
// Параметры:
// ЗначениеИначе - Произвольный - Значение, которое должна вернуть функция, если текущий экземпляр Опциональный
// не содержит значение.
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный, или переданное значение.
//
Функция Иначе_(ЗначениеИначе)
```
### ИначеПолучить
```bsl
// Получить значение, содержащееся в экземпляре Опциональный, или вычислить новое значение,
// если экземпляр Опциональный пустой.
//
// Параметры:
// ФункцияПолученияЗначения - Действие - Делегат на функцию без параметров
// - Строка - Лямбда выражение функция без параметров
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный,
// или результат переданной функции получения значения.
//
Функция ИначеПолучить(ФункцияПолученияЗначения)
```
### ИначеВызватьИсключение
```bsl
// Получить значение, хранящееся в экземпляре Опциональный, или выбросить исключение с переданной информацией об ошибке.
//
// Параметры:
// ИнформацияОбОшибке - ИнформацияОбОшибке - Данные исключения, которое необходимо выбросить, если Опциональный
// содержит пустое значение.
//
// Выбрасывает исключение:
// - Если экземпляр Опциональный не содержит значение.
//
// Возвращаемое значение:
// Произвольный - Значение, содержавшееся в экземпляре Опциональный.
//
Функция ИначеВызватьИсключение(ИнформацияОбОшибке)
```