Обработчик событий и функции это одно и то же? - PullRequest
0 голосов
/ 16 декабря 2010

Насколько я понимаю, в отличие от функций, обработчик событий получает объект события в качестве параметра.

Есть ли какая-либо другая разница между этими двумя словами или оба схожи?

Кто-нибудь может уточнить оба термина?

Ответы [ 3 ]

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

Это действительно зависит от конкретного языка и API, который вы используете.Например, в Си обработчики событий обычно реализуются как функции.в C ++ они также могут быть вызываемыми объектами.Другие языки могут предлагать другие варианты.

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

Ну, обработчики событий специфичны для используемой вами среды. Модель GUI Java основана на четных обработчиках, обычно вы передаете анонимный внутренний класс, который реализует ожидаемый интерфейс (например, KeyListener), в метод addKeyListener (или аналогичный).

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

C ++ позволяет вам использовать идею указателя на функцию, или вы можете определить объект, который запускает какой-либо метод, когда вы пытаетесь «вызвать» его - some_obj() для соответствующего определенного объекта вызовет некоторую функцию по вашему выбору. Вы могли бы даже заставить это принять аргументы. Python такой же.

Если обратный вызов принимает параметр, который определяет событие, он обычно называется обработчиком события. Но они могут быть использованы в значительной степени взаимозаменяемо.

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

Это может зависеть от языка. Обработчик событий - это функция, которая часто имеет специальный параметр (в большинстве случаев), где этот параметр является объектом события.

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

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

Надеюсь, этот пост полезен.

...