Skip to content

Latest commit

 

History

History

Either

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Either

Украл из языка Kotlin, понравилась концепция, описанная здесь.

Как-то прижилось.

Конструкция для красивой работы с методами, которые могут выполняться с предусмотренной ошибкой. Возвращает либо ошибку, либо успешный результат.

Использование

Если инициализировать с пустыми аргументами - Either примет состояние "ошибка". Также можно передать в качестве ошибки некоторый объект (например, текст ошибки) - тогда надо инициализировать с пустым первым аргументом, а во втором передать "ошибочный" объект. В первом аргументе всегда передаётся верный объект. Если первый аргумент присутствует, то Either примет состояние "успех".

Синтаксис конструктора

Either.Create([SuccessValue[, ErrorValue]])

Аргумент Тип Описание
SuccessValue Variant передаваемое значение/объект в случае успеха
ErrorValue Variant передаваемое значение/объект в случае ошибки

Интерфейс IEither

Полe Тип Описание
IsError Boolean статус "ошибка"
IsSuccess Boolean статус "успех"
ErrorValue Variant значение/объект в случае ошибки
SuccessValue Variant значение/объект в случае успеха

Пример

' возвращаем текущий документ
' либо, если нет открытых документов - возвращаем Either со статусом Error
Function GetDocument() as IEither
    If ActiveDocument Is Nothing Then
        Set GetDocument = Either.Create
        Exit Function
    End If
    Set GetDocument = Either.Create(ActiveDocument)
End Function

' запрашиваем активный документ в главной процедуре
' если его нет - выдаём ошибку и завершаем
Sub Main()
    Dim MyDocument as Document
    With GetDocument
        If .IsError Then
            VBA.MsgBox "Нет открытых документов"
            Exit Sub
        End If
        Set MyDocument = .SuccessValue
    End With
End Sub

Зависимости

Нет.