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 = trueQuando 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 = 25Abordagens 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 = 20MapRight 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
Was this helpful?