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 =20Either<string, int> eitherValue =22;int result =eitherValue.Fold( state,(_state, right)=> right + _state,(_state, left)=> _state +10);//result = 42
Quando o valor Either está no estado IsLeft
int state =20Either<string, int> eitherValue ="ERROR";int result =eitherValue.Fold( state,(_state, right)=> right + _state,(_state, left)=> _state +10);//result = 30
Abordagens 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
FoldRight Quando o valor Either está no estado IsLeft
FoldLeft Quando o valor Either está no estado IsRight