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
.
Parâmetros | Retorno |
---|---|
Func<T, Option<TResult>> binder Option<T> option |
Option<TResult> |
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