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"