{"id":18931781,"url":"https://github.com/nixel2007/optional","last_synced_at":"2026-03-18T03:30:18.929Z","repository":{"id":91616262,"uuid":"415288712","full_name":"nixel2007/optional","owner":"nixel2007","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-15T07:00:06.000Z","size":25,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-12-31T20:16:43.841Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"1C Enterprise","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nixel2007.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nixel2007"}},"created_at":"2021-10-09T11:24:15.000Z","updated_at":"2022-02-14T16:24:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"c8f66bce-a793-4586-8979-04dbe07e1c3b","html_url":"https://github.com/nixel2007/optional","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foptional","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foptional/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foptional/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nixel2007%2Foptional/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nixel2007","download_url":"https://codeload.github.com/nixel2007/optional/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239930039,"owners_count":19720251,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T11:46:40.797Z","updated_at":"2026-03-18T03:30:18.869Z","avatar_url":"https://github.com/nixel2007.png","language":"1C Enterprise","funding_links":["https://github.com/sponsors/nixel2007"],"categories":[],"sub_categories":[],"readme":"# Optional\r\n\r\nБиблиотека предоставляет объект-контейнер, который *может* содержать какое-либо значение или быть \"пустым\". \r\nНад контейнером можно выполнять операции в функциональном стиле, аналогично библиотеке [fluent](https://github.com/nixel2007/oscript-fluent).\r\n\r\nФункции фильтрации и обработки могут задаваться с помощью \"Действий\" и Строк (библиотека [lambdas](https://github.com/sfaqer/lambdas))\r\n\r\n## Опциональный\r\n\r\n### ПриСозданииОбъекта\r\n\r\n```bsl\r\n// Конструктор объекта.\r\n//\r\n// Параметры:\r\n//   Объект - Произвольный - Значение, которое необходимо упаковать в Опциональный.\r\n//   ДопустимоНеопределено - Булево - Флаг допустимости упаковывания значения \"Неопределено\".\r\n//\r\nПроцедура ПриСозданииОбъекта(Объект, ДопустимоНеопределено = Ложь) \r\n```\r\n\r\n### Пустой\r\n\r\n```bsl\r\n// Проверка незаполненности значения в Опциональный.\r\n//\r\n//  Возвращаемое значение:\r\n//   Булево\r\n//\r\nФункция Пустой() \r\n```\r\n\r\n### СодержитЗначение\r\n\r\n```bsl\r\n// Проверка заполненности значения в Опциональный.\r\n//\r\n//  Возвращаемое значение:\r\n//   Булево\r\n//\r\nФункция СодержитЗначение() \r\n```\r\n\r\n### Обработать\r\n\r\n```bsl\r\n// Выполнить действие над значением, если оно существует.\r\n//\r\n// Параметры:\r\n//   ФункцияОбработки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект\r\n//    и которая должна вернуть результат обработки\r\n//                    - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект\r\n//    и которая должна вернуть результат обработки\r\n//\r\n//  Возвращаемое значение:\r\n//   Опциональный - Обработанное значение, упакованное в Опциональный.\r\n//\r\nФункция Обработать(ФункцияОбработки) \r\n```\r\n\r\n### Развернуть\r\n\r\n```bsl\r\n// Выполнить действие, возвращающее другой Опциональный, над значением, если оно существует.\r\n//\r\n// Параметры:\r\n//   ФункцияРазвертки - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект\r\n//    и которая должна вернуть новый Опциональный с результатом развертки\r\n//                    - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект\r\n//    и которая должна вернуть новый Опциональный с результатом развертки\r\n//\r\n//  Выбрасывает исключение:\r\n//    - Если функция развертки вернула значение, отличное от Опциональный.\r\n//\r\n//  Возвращаемое значение:\r\n//   Опциональный - Обработанное значение.\r\n//\r\nФункция Развернуть(ФункцияРазвертки) \r\n```\r\n\r\n### Фильтровать\r\n\r\n```bsl\r\n// Выполнить действие фильтрации над значением, если оно существует.\r\n//\r\n// Параметры:\r\n//   ФункцияФильтрации - Действие - Делегат на функцию с одним параметром в которую будет передан хранимый объект\r\n//    и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру\r\n//                    - Строка - Лямбда выражение функция с одним параметром в которую будет передан хранимый объект\r\n//    и которая должна вернуть Булево, Истина в случае если объект соответствует фильтру\r\n//\r\n//  Возвращаемое значение:\r\n//   Опциональный - Отфильтрованное значение, упакованное в Опциональный.\r\n//\t\tПустой Опциональный, если функция фильтрации вернула Ложь, иначе этот же экземпляр Опциональный.\r\n//\r\nФункция Фильтровать(ФункцияФильтрации) \r\n```\r\n\r\n### ЕслиСодержитЗначение\r\n\r\n```bsl\r\n// Выполнить действие над значением, если оно существует.\r\n//\r\n// Параметры:\r\n//   ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект\r\n//                    - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект\r\n//\r\nПроцедура ЕслиСодержитЗначение(ФункцияОбработки) \r\n```\r\n\r\n### ЕслиСодержитЗначениеИначе\r\n\r\n```bsl\r\n// Выполнить действие над значением, если оно существует, или выполнить другое действие, если значение не существует.\r\n//\r\n// Параметры:\r\n//   ФункцияОбработки - Действие - Делегат на процедуру с одним параметром в которую будет передан хранимый объект\r\n//                    - Строка - Лямбда выражение процедура с одним параметром в которую будет передан хранимый объект\r\n//   ФункцияОбработкиИначе - Действие - Делегат на процедуру без параметров \r\n//                         - Строка - Лямбда выражение процедура без параметров\r\n//\r\nПроцедура ЕслиСодержитЗначениеИначе(ФункцияОбработки, ФункцияОбработкиИначе) \r\n```\r\n\r\n### Или_\r\n\r\n```bsl\r\n// Выполнить действие по расчету нового Опциональный, если текущий экземпляр Опциональный содержит пустое значение.\r\n//\r\n// Параметры:\r\n//   ФункцияСоздания - Действие - Делегат на функцию без параметров \r\n//                   - Строка - Лямбда выражение функция без параметров\r\n//\r\n//  Возвращаемое значение:\r\n//   Опциональный - Новое значение, упакованное в Опциональный, \r\n//\t\tесли текущий экземпляр Опциональный содержит пустое значение.\r\n//\t\tТекущий экземпляр Опциональный, если он содержал значение.\r\n//\r\nФункция Или_(ФункцияСоздания) \r\n```\r\n\r\n### ПроцессорКоллекций\r\n\r\n```bsl\r\n// Возвращает ПроцессорКоллекций, содержащий 0 или 1 элемент. Если экземпляр Опциональный содержит значение,\r\n//\tто ПроцессорКоллекций будет содержать это распакованное значение.\r\n//\r\n//  Возвращаемое значение:\r\n//   ПроцессорКоллекций - ПроцессорКоллекций, содержащий распакованное значение Опциональный, если оно было заполнено.\r\n//\t\tПустой ПроцессорКоллекций, если экземпляр Опциональный не содержал значение. \r\n//\r\nФункция ПроцессорКоллекций() \r\n```\r\n\r\n### Получить\r\n\r\n```bsl\r\n// Получить значение, содержащееся в экземпляре Опциональный.\r\n//\r\n//  Выбрасывает исключение:\r\n//    - Если экземпляр Опциональный не содержит значение.\r\n//\r\n//  Возвращаемое значение:\r\n//   Произвольный - Значение, содержавшееся в экземпляре Опциональный.\r\n//\r\nФункция Получить() \r\n```\r\n\r\n### Иначе_\r\n\r\n```bsl\r\n// Получить значение, содержащееся в экземпляре Опциональный, или переданное значение, \r\n//\tесли экземпляр Опциональный пустой.\r\n//\r\n// Параметры:\r\n//   ЗначениеИначе - Произвольный - Значение, которое должна вернуть функция, если текущий экземпляр Опциональный\r\n//\t\tне содержит значение.\r\n//\r\n//  Возвращаемое значение:\r\n//   Произвольный - Значение, содержавшееся в экземпляре Опциональный, или переданное значение.\r\n//\r\nФункция Иначе_(ЗначениеИначе) \r\n```\r\n\r\n### ИначеПолучить\r\n\r\n```bsl\r\n// Получить значение, содержащееся в экземпляре Опциональный, или вычислить новое значение, \r\n//\tесли экземпляр Опциональный пустой.\r\n//\r\n// Параметры:\r\n//   ФункцияПолученияЗначения - Действие - Делегат на функцию без параметров \r\n//                            - Строка - Лямбда выражение функция без параметров\r\n//\r\n//  Возвращаемое значение:\r\n//   Произвольный - Значение, содержавшееся в экземпляре Опциональный,\r\n//\t\tили результат переданной функции получения значения.\r\n//\r\nФункция ИначеПолучить(ФункцияПолученияЗначения) \r\n```\r\n\r\n### ИначеВызватьИсключение\r\n\r\n```bsl\r\n// Получить значение, хранящееся в экземпляре Опциональный, или выбросить исключение с переданной информацией об ошибке.\r\n//\r\n// Параметры:\r\n//   ИнформацияОбОшибке - ИнформацияОбОшибке - Данные исключения, которое необходимо выбросить, если Опциональный\r\n//\t\tсодержит пустое значение.\r\n//\r\n//  Выбрасывает исключение:\r\n//    - Если экземпляр Опциональный не содержит значение.\r\n//\r\n//  Возвращаемое значение:\r\n//   Произвольный - Значение, содержавшееся в экземпляре Опциональный.\r\n//\r\nФункция ИначеВызватьИсключение(ИнформацияОбОшибке) \r\n```\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Foptional","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnixel2007%2Foptional","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnixel2007%2Foptional/lists"}