Fold
Cria um novo valor do tipo TState aplicando a função folder ao valor either de acordo com seu estado.
Parâmetros
Retorno
Func<TState, TRight, TState> folderWhenRight
Func<TState, TLeft, TState> folderWhenLeft
TState state
Either<TLeft, TRight> either
TState
Como usar
Esta função realiza uma transformação de um Either<TLeft, TRight> para um TState ao aplicar a função folder respectiva ao seu estado.
Quando o valor Either está no estado IsRight
int state = 20
Either<string, int> eitherValue = 22;
int result = eitherValue.Fold(
state,
(_state, right) => right + _state,
(_state, left) => _state + 10);
//result = 42Quando o valor Either está no estado IsLeft
int state = 20
Either<string, int> eitherValue = "ERROR";
int result = eitherValue.Fold(
state,
(_state, right) => right + _state,
(_state, left) => _state + 10);
//result = 30Abordagens para apenas um dos lados
Você pode utilizar os métodos FoldLeft e FoldRight 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.
FoldRight Quando o valor Either está no estado IsRight
int state = 20
Either<string, int> eitherValue = 22;
int result = eitherValue.FoldRight(
state,
(_state, right) => right + _state);
//result = 42FoldRight Quando o valor Either está no estado IsLeft
int state = 20
Either<string, int> eitherValue = "ERROR";
int result = eitherValue.FoldRight(
state,
(_state, right) => right + _state);
//result = 20FoldLeft Quando o valor Either está no estado IsRight
int state = 20
Either<string, int> eitherValue = 22;
int result = eitherValue.FoldLeft(
state,
(_state, left) => _state + 10);
//result = 20Last updated
Was this helpful?