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


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

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

Специальные возможности и элементы управления Windows Forms
Применение объекта DataReader
Стандартная система типов CTS
Формы, элементы управления и меню
ToDoList 5.6.6
Компиляция и исполнение .NET-приложений
Полиморфизм
Принципы дизайна интерфейса
Модель защиты, основанная на ролях
Вызов методов
Абстрактные классы и члены
Установка приложения
Проверка на уровне поля
Обзор ADO.NET
Параметры компоновки установочной программы
| .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


     



Rambler's Top100

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

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