Map

Cria um novo valor Either<TLeft, TRight>, onde o valor encapsulado é o resultado da função mapping sobre o valor either, de acordo com seu estado.

Parâmetros

Retorno

Func<TRight, TRightResult> mappingWhenRight

Func<TLeft, TLeftResult> mappingWhenLeft

Either<TLeft, TRight> either

Either<TLeftResult, TRightResult>

Como usar

Esta função é comumente utilizada para alterar um valor Either através de uma função, semelhante ao Map dos valores opcionais.

Esta função utiliza o Match para extrair o valor do tipo Either<TLeft, TRight>, aplica a função mappingWhenRight ou mappingWhenLeft de acordo com o estado do valor.

Quando o valor Either está no estado IsRight e os tipos são transformados

Either<string, int> either = 10;
Either<int, bool> eitherResult = 
    either.Map(
        right => right % 2 == 0,
        left => Convert.ToInt32(left));

//eitherResult.IsRight = true
//eitherResult.Right = true

Quando o valor Either está no estado IsLeft e os tipos são transformados

Either<string, int> either = "25";
Either<int, bool> eitherResult = 
    either.Map(
        right => right % 2 == 0,
        left => Convert.ToInt32(left));

//eitherResult.IsLeft = true
//eitherResult.Left = 25

Abordagens para apenas um dos lados

Você pode utilizar os métodos MapLeft e MapRight para obter o mesmo resultado, mas desta vez aplicando a função somente em um dos valores.

Sempre que estas funções forem aplicados para valores Either que não estão do mesmo tipo que a função de avaliação será retornado o próprio valor Either.

MapRight Quando o valor Either está no estado IsRight

Either<string, int> either = 10;
Either<string, int> eitherResult = 
    either.MapRight(right => right * 2);

//eitherResult.IsRight = true
//eitherResult.Right = 20

MapRight Quando o valor Either está no estado IsLeft

Either<string, int> either = "Hello World";
Either<string, int> eitherResult = either.MapRight(
right => right * 2);

//eitherResult.IsLeft = true
//eitherResult.Left = "Hello World"

Last updated