Преимущества передачи функции в качестве параметра - PullRequest
5 голосов
/ 12 декабря 2010

Просто готовлюсь к экзамену, и я не могу найти ответ на этот вопрос в наших заметках.Любая помощь была бы полезна.

Многие языки разрешают передавать функции / функции в качестве параметров.Перечислите два преимущества, обеспечиваемые этим, и мотивируйте каждое преимущество четким пояснительным примером (это не обязательно должен быть код псевдокода).

Ответы [ 6 ]

2 голосов
/ 12 декабря 2010

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

Ситуация 1 : Вы должны сказатьнекоторые подчиненные выполняют следующие действия: а) получают завтрак для звезды и проявляют большую осторожность с теми круассанами, которые ей нравятся, помните, что она очень расстроена, когда просыпается и т. д. б) Поместите все кабели на сцену, используя ту или иную силу, которая освещает, но не ту, эти цвета ...

Ситуация 2 : Спросите своего подчиненного: Попросите мажордомо дать нашу звездуее обычный завтрак.Затем попросите команду позаботиться о сцене для обычных песен.

Ситуация Один ошибочен с точки зрения компьютера, он типичен для быстрых и грязных действий.Да, у вас есть парень под рукой, но он выполняет все поручения и выполняет несколько обязанностей различных типов, поэтому он может быть сбит с толку, и, кроме того, заказ длинный и подробный.

Во второй ситуации, которую вы делегируете, это справляется со сложностью, порядок короткий, мы знаем, кто выполняет какие задания, поэтому мы не найдем огромную лампочку розового цвета в чайной чашке звезды (Вы думаете, что это шутка, но это именно то, что ошибка).В нескольких словах сложность разделена осмысленным образом.

Если вы не понимаете, почему ситуация два похожа на вызов функций, здесь псевдокод.

extern FUNCTION majordomo (клиент, сервис, опции);
extern FUNCTION crew (задача,опции ) ;

ФУНКЦИЯ startMorning () НАЧАЛО

вызов (подчиненный, majordomo (for_ourstar, обычный_ завтрак, she_is_picky));
вызов (подчиненный, экипаж (обычные кабели, яркий свет));
КОНЕЦ

2 голосов
/ 12 декабря 2010

Основным преимуществом является то, что если вызываемая функция вызывает другую функцию, вы можете изменить поведение вызываемой функции, указав, какая другая функция вызывается.делать домашнее задание.

1 голос
/ 12 декабря 2010

Одной из вещей, передающих функцию «действие» в метод, является возможность выполнить действие над коллекцией, не подвергая внутренним объектам этой коллекции.

Типичное использование - перебор частногоколлекция, вызывающая переданную функцию для каждого элемента.

Еще один метод обратного вызова.

0 голосов
/ 12 декабря 2010

Рассмотрим функцию, которая сортирует массив объектов на основе сортировки сравнения.Такая функция нуждается в способе сравнения двух объектов и определения, какой из них больше другого.Вы можете передать такой общей функции сортировки указатель на массив и указатель на функцию, которая помогает ему сравнивать любые 2 объекта.

См. Пример сортировки STL.

0 голосов
/ 12 декабря 2010

Применение определенного действия ко всем членам коллекции.(т. е. квадрат каждого числа в нем).

0 голосов
/ 12 декабря 2010

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

Когда функция завершит свою работу, она вызовет функцию обратного вызова с аргументами или без аргументов.

...