FoldBack
Cria um novo valor do tipo TState aplicando a função folder ao valor either de acordo com seu estado.
Parâmetros
Retorno
Func<TRight, TState, TState> folderWhenRight
Func<TLeft, TState, TState> folderWhenLeft
Either<TLeft, TRight> either
TState state
TState
Como usar
Esta função realiza uma transformação de um Either<TLeft, TRight> para um TState ao aplicar a função folder, semelhante ao Fold. A única diferença entre este método e o método Fold é sua ordem de parâmetros e a ordem de parâmetros de suas funções folderWhen.
Quando o valor Either está no estado IsRight
int state = 20
Either<string, int> eitherValue = 22;
int result =
eitherValue.FoldBack(
(right, _state) => right + _state,
(left, _state) => _state + 10,
state);
//result = 42Quando o valor Either está no estado IsLeft
int state = 20
Either<string, int> eitherValue = 22;
int result =
eitherValue.FoldBack(
(right, _state) => right + _state,
(left, _state) => _state + 10,
state);
//result = 30Abordagens para apenas um dos lados
Você pode utilizar os métodos FoldBackLeft e FoldBackRight 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á retornado o valor state informado por parâmetro.
FoldBackRight Quando o valor Either está no estado IsRight
int state = 20
Either<string, int> eitherValue = 22;
int result =
eitherValue.FoldBackRight(
(right, _state) => right + _state,
state);
//result = 42FoldBackRight Quando o valor Either está no estado IsLeft
int state = 20
Either<string, int> eitherValue = "ERROR";
int result = eitherValue.FoldBackRight(
(right, _state) => right + _state,
state);
//result = 20FoldBackLeft Quando o valor Either está no estado IsRight
int state = 20
Either<string, int> eitherValue = 22;
int result = eitherValue.FoldBackLeft(
(left, _state) => _state + 10,
state);
//result = 20Last updated
Was this helpful?