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

Last updated