Cast Rápido para Delegates
Esta classe estática contém métodos para transformar uma função nomeada em seu respectivo delegate: Func ou Action.
Desta forma é possível utilizar as extensões para Curry e Aplicação Parcial mais facilmente.
Métodos
Nome
Parâmetros
Retorno
Descrição
F
Func<TResult> function
Func<TResult>
Retorna a função enviada por parâmetro.
F
Func<T, TResult> function
Func<T, TResult>
Retorna a função enviada por parâmetro.
F
Func<T, T2, TResult> function
Func<T, T2, TResult>
Retorna a função enviada por parâmetro.
F
Func<T, T2, T3, TResult> function
Func<T, T2, T3, TResult>
Retorna a função enviada por parâmetro.
F
Func<T, T2, TResult> function
Func<T, T2, TResult>
Retorna a função enviada por parâmetro.
A
Action function
Action
Retorna a função enviada por parâmetro.
A
Action<T> function
Action<T>
Retorna a função enviada por parâmetro.
A
Action<T, T2> function
Action<T, T2>
Retorna a função enviada por parâmetro.
A
Action<T, T2, T3> function
Action<T, T2, T3>
Retorna a função enviada por parâmetro.
A
Action<T, T2, T3, T4> function
Action<T, T2, T3, T4>
Retorna a função enviada por parâmetro.
Como Usar
As diversas sobrecargas disponíveis podem ser utilizadas para transformar uma função nomeada em um delegate.
Infelizmente, por conta de uma limitação na linguagem não é possível tratar uma função nomeada diretamente como um delegate, conforme exemplo:
int SampleAdd(int value1, int value2)
=> value1 + value2;
SampleAdd.Curry();
SampleAdd.PartialApply(1);A tentativa de executar os métodos Curry e PartialApply irão causar erro de compilação, notificando que SampleAdd é um método e não pode ser utilizado neste contexto.
Para fazer isso precisamos adicionar uma instrução de conversão para o delegate.
Func<int, int, int> sampleAddAsDelegate = SampleAdd;
sampleAddAsDelegate.Curry();
sampleAddAsDelegate.PartialApply(1);Através desta classe é possível realizar a conversão inline, sem termos de criar instruções adicionais.
Para fazer isso você precisa seguir os seguintes passos:
Adicionar uma instrução
using static Tango.Functional.QuickDelegateCast, para realizar a importação estática do conversor;Utilizar a função correspondente descrita na subseção
Métodos.
using static Tango.Functional.QuickDelegateCast;
int SampleAdd(int value1, int value2)
=> value1 + value2;
F<int, int, int>(SampleAdd).Curry();
F<int, int, int>(SampleAdd).PartialApply(1);Através da sintaxe F() e A() é possível converter uma função para seu respectivo delegate e com isso, facilitar o processo de Currying e Aplicação Parcial.
O conceito para Currying e demais exemplos podem ser encontrados na seção Conceitos > Currying e Aplicação Parcial.
Last updated
Was this helpful?