Currying
Esta classe estática contém diversas sobrecargas para a operação de Currying, onde cada sobrecarga espera em funções com diferentes quantidades de parâmetros, contendo ou não um retorno.
Métodos
Nome | Parâmetros | Retorno | Descrição |
---|---|---|---|
Curry | Func<T, T2, TResult> function | Func<T, Func<T2, TResult>> | Cria uma nova função curriada a partir da função informada no parâmetro. |
Curry | Func<T, T2, T3, TResult> function | Func<T, Func<T2, Func<T3,TResult>>> | Cria uma nova função curriada a partir da função informada no parâmetro. |
Curry | Func<T, T2, T3, T4, TResult> function | Func<T, Func<T2, Func<T3,Func<T4, TResult>>>> | Cria uma nova função curriada a partir da função informada no parâmetro. |
Curry | Action<T, T2> action | Func<T, Action<T2>> | Cria uma nova função curriada a partir da função informada no parâmetro. |
Curry | Action<T, T2, T3> action | Func<T, Func<T2, Action<T3>>> | Cria uma nova função curriada a partir da função informada no parâmetro. |
Curry | Action<T, T2, T3, T4> action | Func<T, Func<T2, Func<T3,Action<T4>>>> | Cria uma nova função curriada a partir da função informada no parâmetro. |
Como Usar
As diversas sobrecargas disponíveis podem ser utilizadas para criar novas funções a partir de funções existentes.
Neste exemplo vamos considerar a função add
como uma função que realiza a soma de dois números:
Func<int, int, int> add = (value, value2) => value + value2;
Ao aplicarmos a função Curry
receberemos como retorno uma nova função, esta função irá esperar apenas um dos parâmetros da soma e
retornará uma nova função, que por sua vez esperará um último parâmetro e retornará o resultado da soma.
Func<int, int, int> add =
(value, value2) => value + value2;
Func<int, Func<int, int>> addCurried = Currying.Curry(add);
curriedResult = addCurried(2)(3);
O conceito para Currying e demais exemplos podem ser encontrados na seção Conceitos > Currying e Aplicação Parcial.