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


* При перепечатке материалов ссылка на 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 Framework
Конструкторы и деструкторы
Parsing Expression Grammar Support for C# 3.0 Part 1 – PEG Lib and Parser Generator
Команды для манипулирования данными
Графический дизайнер
Интерфейсы CTS
Распространение приложений через Интернет
Делегаты CTS
Автоматизация разработки
Применение элемента управления PrintPreviewControl
| .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


     



Rambler's Top100

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

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