Iterate

Aplica uma função ao valor Either<TLeft, TRight> de acordo com eu estado.

Parâmetros

Retorno

Action<TRight> actionWhenRight

Action<TRight> actionWhenLeft

Either<TLeft, TRight> either

void

Como usar

Esta função é uma alternativa ao Map para funções que não produzem nenhum resultado. Por não retornar um valor, esta função bloqueia encadeamentos após sua execução.

Quando o valor Either está no estado IsRight

Either<string, int> either = 10;
either.Iterate(
    right => Console.WriteLine(right.ToString()),
    left => Console.WriteLine($"Hello {left}"));

//"10"

Quando o valor Either está no estado IsLeft

Either<string, int> either = " World";
either.Iterate(
    right => Console.WriteLine(right.ToString()),
    left => Console.WriteLine($"Hello {left}"));

//"Hello World"

Abordagens para apenas um dos lados

Você pode utilizar os métodos IterateLeft e IterateRight para obter o mesmo resultado, mas desta vez aplicando a função em somente 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á realizada uma instrução para gerar um novo Unit (não produzir resultados).

IterateLeft Quando o valor Either está no estado IsRight

Either<string, int> either = 10;
either.IterateLeft(left => Console.WriteLine($"Hello {left}"));
//

IterateLeft Quando o valor Either está no estado IsLeft

Either<string, int> either = " World";
either.IterateLeft(
left => Console.WriteLine($"Hello {left}"));
//"Hello World"

Last updated