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:
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.
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
.
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