Map
Cria um novo valor opcional onde o valor encapsulado é o resultado da função mapping
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, TResult> mapping Option<T> option |
Option<TResult> |
Como usar
Esta função é comumente utilizada para alterar um valor opcional através de uma função comum. Com o Map
é possível aplicar uma função que espera um valor do tipo int
à um Option<int>
, por exemplo.
Esta função utiliza o Match
para extrair o valor do tipo Option<T>
, aplica a função mapping
e encapsula o resultado em um novo valor opcional.
Esta função é similar ao Select
do namespace System.Linq
, mas para valores opcionais.
Quando o valor opcional está no estado IsSome
Option<int> optionValue = 4;
Option<int> result = optionValue.Map(value => value * 2);
//result.IsSome = true
//result.Some = 8
Quando o valor opcional está no estado IsSome e o resultado é de outro tipo: int -> string
Option<int> optionValue = 4;
Option<string> result = optionValue.Map(value => value.ToString());
//result.IsSome = true
//result.Some = "4"
Quando o valor opcional está no estado IsSome e é utilizada uma função nomeada
int SquareAndDouble(int value)
{
return value * value * 2;
}
Option<int> optionValue = 4;
Option<int> result = optionValue.Map(SquareAndDouble);
//result.IsSome = true
//result.Some = 32
Quando o valor opcional está no estado IsNone
Option<int> optionValue = Option<int>.None();
Option<int> result = optionValue.Map(value => value * 2);
//result.IsSome = false
//result.IsNone = true