Функторы, когда я должен их использовать, каково их предназначение [закрыто]

Я просто не могу обернуться вокруг них.

Как я понимаю, это динамическое добавление логики в класс. Готовы ли к этому занятия в рамках?

Зачем мне просто расширять класс и добавлять к нему функциональность в расширении. Я был бы доступен по всему миру, и его было бы намного проще поддерживать.

Я прочитал, что есть 4 типа функторов:

Comparer
закрытие
сказуемое
Трансформатор

Мы должны, вероятно, справиться с каждым из них.

постскриптум есть ли что-то подобное в VB?

Поэтому я могу сказать, что я думаю, что лямбда-выражения являются функторами. Это немного проясняет для меня :) (хе-хе)

Лямбда-выражения являются функторами?Анонимные функции - это функторы?

Но я задал этот вопрос, потому что я столкнулся с другим типом fucntors, а именно:

delegate void FunctorDelegate(int value);
class Addition {
    FunctorDelegate _delegate;

    public Addition AddDelegate(FunctorDelegate deleg) {
        _delegate += deleg;
        return this;
    }
    public int AddAllElements(IList< int> list) {
        int runningTotal = 0;
        foreach( int value in list) {
            runningTotal += value;
            _delegate(value);
        }
        return runningTotal;
    }
}

И затем вызывая это с этим:

 int runningTotal = new Addition()
     .AddDelegate(new FunctorDelegate(
                     delegate(int value) {
                         if ((value % 2) == 1) {
                             runningOddTotal += value;
                         }
                     }))
    .AddDelegate(new FunctorDelegate(
                     delegate(int value) {
                         if ((value % 2) == 0) {
                             runningEvenTotal += value;
                         }
                     }))
    .AddAllElements(list);

Так что никаких необычных вещей в стиле лямбда.

Теперь у меня есть этот пример, но не совсем понятно, почему это «хорошее» решение.

Используются ли делегаты (функторы) как лямбда-выражения или анонимные методы "в большинстве случаев" просто как ярлык для программиста? Насколько я вижу, есть только несколько случаев, когда они на самом деле являются предпочтительным выбором для проблемы.

Ответы на вопрос(5)

Ваш ответ на вопрос