Bind

Cria um novo valor opcional onde o valor encapsulado é o resultado da função binder sobre o valor opcional atual, quando o valor estiver no estado IsSome, caso contrário retorna um novo valor opcional no estado IsNone.

Como usar

Esta função é comumente utilizada para alterar um valor opcional através de uma função que espera como parâmetro um valor comum e retorna um valor opcional.

Esta função é similar ao Map, mas neste caso a função aplicada já retorna um valor opcional.

Quando o valor opcional está no estado IsSome e a função retorna um valor no estado IsSome

Option<int> SquareWhenEven(int value)
{
    if(element % 2 == 0)
        return value * value;
    else
        return Option<int>.None();
}

Option<int> optionValue = 4;
Option<int> result = optionValue.Bind(SquareWhenEven);

//result.IsSome = true
//result.Some = 8

Quando o valor opcional está no estado IsSome e a função retorna um valor no estado IsNone

Option<int> SquareWhenEven(int value)
{
    if(element % 2 == 0)
        return value * value;
    else
        return Option<int>.None();
}

Option<int> optionValue = 5;
Option<int> result = optionValue.Bind(SquareWhenEven);

//result.IsSome = false
//result.IsNone = true

Quando o valor opcional está no estado IsNone

Option<int> SquareWhenEven(int value)
{
    if(element % 2 == 0)
        return value * value;
    else
        return Option<int>.None();
}

Option<int> optionValue = Option<int>.None();
Option<int> result = optionValue.Bind(SquareWhenEven);

//result.IsSome = false
//result.IsNone = true

Last updated