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


* При перепечатке материалов ссылка на 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

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

Параметризованные свойства
Динамические свойства
Сокрытие членов базового класса в Visual C#
Применение методов формы
Настройка установочной программы
Установка сборок в виде компилированных образов
Команды для манипулирования данными
Подключение класса DoughnutMachine к пользовательскому интерфейсу
Создание производных элементов управления
Промежуточный язык
Towards Cleaner Code II, a C# GUI Invoke/Async Helper
Ссылки на внешние библиотеки
Создание формируемых элементов управления
Перебор элементов массивов и наборов
Генерация исключений
| .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). Регион сайта: Москва и Санкт-Петербург