Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Карринг (currying)
6 февраля 2009

Карринг - это техника сведения функции многих аргументов к функции одного аргумента. Простейшим примером карринга является перегрузка функции. Однако карринг этим не ограничен, ибо его возможности намного шире. Вернёмся к нашей многосрадальной функции вычисления факториала, сейчас для её вызова нужно постоянно указывать вторым параметром единицу, но карринг избавит нас от этой повинности:
public static class Currying
{
public static Func<TArg1, TResult> Bind2nd<TArg1, TArg2, TResult>(
this Func<TArg1, TArg2, TResult> func,
TArg2 constant)
{
return (<img src="images/icons/icon_sleep.png" alt='x-)'> => func(x, constant);
}
}
class Program
{
static void Main(string[] args)
{
Func<int, int, long> Factorial = null;
Factorial = (n, a) => n > 1 ? Factorial(n-1, a*n) : a;
var fact = Factorial.Bind2nd(1);
for (int i=0; i<10; i++)
Console.WriteLine("{0}! = {1}", i, fact(i));
Console.ReadLine();
}
}
как видишь, теперь для вычисления факториала достаточно вызвать fact(i), не будем пока вдаваться в тонкости реализации карринга в C#3, главное что ты пока должен усвоить, что он там реализован, а значит это уже мэйнстрим!


Теги: .NET

Статьи по теме:

Использование шаблонов кода
Получение доступа к библиотекам типов .NET и СОМ
Параметры компоновки установочной программы
Объекты и члены
Модификаторы доступа для вложенных типов
Защищенные члены
Интерфейсы как средство достижения полиморфизма
Свойства BackColor, ForeColor и Text
Стандартная система типов CTS
Доступ к общим членам
Создание формы
Создание класса строго типизированного набора на основе класса CollectionBase
Наследование от абстрактного класса
Программа сертификации специалистов Microsoft
Работа с классом Help
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Карринг (currying). Регион сайта: Москва и Санкт-Петербург