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

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

Класс DataViewManager
Объекты, члены и абстрагирование
Классы CTS
Модификаторы доступа к членам
Свойства-наборы
Реализация полиморфизма через интерфейсы
Назначение значка элементу управления
Рисование простых фигур
Примеси (mixin)
Ограничения Foreign Key
Создание элементов управления
Создание обработчиков событий элементов управления
Обзор .NET Framework
Проверка разрешений, запрашиваемых установленной сборкой
Проект установочной программы
| .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). Регион сайта: Москва и Санкт-Петербург