将函数作为参数传递的优点

时间:2010-12-12 00:50:22

标签: function parameter-passing

刚刚参加考试,我在笔记中找不到这个问题的答案。任何帮助都会很棒。

  

许多语言允许子例程/函数作为传递   参数。列出由此提供的两个优点,并激励每个   具有明确解释性示例的优点(这不一定是代码   伪代码)。

6 个答案:

答案 0 :(得分:2)

主要优点是,如果被调用的函数调用另一个函数,则可以通过指定调用哪个函数来修改被调用函数的行为。

对不起,除此之外,你需要做自己的功课。

答案 1 :(得分:2)

认为你是一位迷人歌手的经理(在电脑生活中:一个节目),用以下两种方式开始你的早晨。

情况1 :你必须告诉一些下属做以下 a)为这位明星准备早餐,并且非常注意她喜欢的那种羊角面包,记住当她醒来等时,她非常沮丧。 b)使用这样的电源将所有电缆放在舞台上,而不是那个,这些颜色...

情境2 :问你的下属:请majordomo给我们的明星她一般的早餐。然后请工作人员照看通常歌曲的舞台。

情况从计算机的角度来看,这是错误的,这是一种快速而肮脏的做法。是的,你有手头的人,但他正在做所有的差事和处理不同类型的几个责任,所以他可能会感到困惑,而且订单很长很详细。

在情况二,你是委托,这处理复杂性,订单很短,我们知道谁在做哪些工作所以我们不会在明星的茶杯中找到粉红色的巨大灯泡(你认为它是一个笑话,但这正是一个错误)。 简而言之,复杂性以有意义的方式划分。

如果你不明白为什么情况二就像调用函数一样是伪代码。

extern FUNCTION majordomo(客户,服务,选项);
extern FUNCTION工作人员(任务,选项);

功能startMorning()BEGIN

致电(underling,majordomo(for_ourstar,ordinary_breakfast,she_is_picky));
呼叫(下属,船员(通常的电缆,明亮的灯));
结束

答案 2 :(得分:1)

将“动作”功能传递给方法的一个原因是能够对集合执行操作而不暴露该集合的内部。

一个典型的用法是,遍历私有集合,调用每个项目上的传递函数。

另一种是作为回调方法。

答案 3 :(得分:0)

我简单的回答是传递的函数可能被用作回调函数。

当函数完成它的工作时,它将使用或不带参数调用回调函数。

答案 4 :(得分:0)

将某个操作应用于集合的所有成员。 (即广场中的每个数字)。

答案 5 :(得分:0)

考虑一个基于比较排序对对象数组进行排序的函数。这样的函数需要一种方法来比较2个对象并告诉哪个对象大于另一个。您可以将这样的常规排序函数传递给指向数组的指针和指向函数的指针,以帮助它比较任何2个对象。

请参阅STL的一个例子。