事件处理程序和函数是一回事吗?

时间:2010-12-16 10:09:44

标签: events function programming-languages

根据我的理解,与函数不同,事件处理程序将事件对象作为参数接收。

这两个词之间是否还有其他相似之处?

任何人都可以详细说明这两个条款吗?

3 个答案:

答案 0 :(得分:1)

这实际上取决于您使用的特定语言和API。例如,在C中,事件处理程序通常实现为函数。在C ++中,它们也可以是可调用对象。其他语言可能提供不同的选择。

答案 1 :(得分:0)

这可能取决于语言。事件处理程序是一个函数,它通常具有一个特殊参数(在大多数情况下),其中参数是事件对象。

所以不,事件处理程序和函数之间确实没有区别。您可以像调用函数一样轻松调用事件处理程序,除非您必须将一些事件对象传递给事件处理函数,但情况并非总是如此。

基本上你永远不会像调用函数那样调用事件处理程序,你会在触发某些事件时调用事件,这可能是唯一的区别。

我希望这篇文章有用。

答案 2 :(得分:0)

嗯,事件处理程序特定于您使用的框架。 Java的GUI模型基于偶数处理程序,通常您将实现预期接口(如KeyListener)的匿名内部类传递给addKeyListener(或类似)方法。

在C中,通常使用函数指针来实现相同的效果。按钮结构将保存一个指向回调的函数指针,并且此函数可以传递给事件结构。

C ++允许你使用函数指针的想法,或者当你试图“调用”它时你可以定义一个运行某些方法的对象 - some_obj()在一个适当定义的对象上会调用你的一些函数选择。你甚至可以让它接受争论。 Python也是这样。

如果回调采用指定事件的参数,则通常称为事件处理程序。但它们几乎可以互换使用。