私の理解によれば、関数とは異なり、イベントハンドラはイベントオブジェクトをパラメータとして受け取ります。イベントハンドラと関数は同じですか?
これら2つの単語の間に他の違いはありますか、どちらも似ていますか?
誰でもこの両方の用語を詳しく説明できますか?
私の理解によれば、関数とは異なり、イベントハンドラはイベントオブジェクトをパラメータとして受け取ります。イベントハンドラと関数は同じですか?
これら2つの単語の間に他の違いはありますか、どちらも似ていますか?
誰でもこの両方の用語を詳しく説明できますか?
実際に使用している言語とAPIによって異なります。たとえば、Cでは、イベントハンドラは通常、関数として実装されます。 C++では呼び出し可能なオブジェクトにすることもできます。他の言語は異なるオプションを提供する可能性があります。
言語によって異なる場合があります。イベントハンドラは、パラメータがイベントオブジェクトである特別なパラメータ(ほとんどの場合)を持つことが多い関数です。
だから、実際にはイベントハンドラと関数に違いはありません。イベントハンドラ関数を呼び出すのと同じように、イベントハンドラを簡単に呼び出すことができますが、イベントハンドラ関数にイベントオブジェクトを渡す必要があります(必ずしもそうではありません)。
基本的には、関数を呼び出すときと同じようにイベントハンドラを呼び出すことはありません。何かがトリガされたときにイベントを呼び出すことがありますが、これは唯一の違いかもしれません。
この投稿は役に立ちましたら幸いです。
イベントハンドラは、使用するフレームワークに固有のものです。 JavaのGUIモデルはevenハンドラをベースにしており、通常addKeyListener
(またはそれに類似した)メソッドに対して(KeyListener
のような)期待されるインタフェースを実装する匿名の内部クラスを渡します。
Cでは、通常、同じエフェクトへの関数ポインタを使用します。ボタン構造体はコールバックへの関数ポインタを保持し、この関数はイベント構造体を渡すことができます。
C++では、関数ポインタのアイデアを使用することができます。または、適切に定義されたオブジェクト上のsome_obj()
が選択した関数を呼び出すときに、何らかのメソッドを実行するオブジェクトを定義できます。あなたは議論を取ることさえできます。 Pythonも同様です。
コールバックにイベントを指定するパラメータがある場合、通常はイベントハンドラと呼ばれます。しかし、それらはかなり互換的に使用することができます。
また、私はハンドラが機能の使用の1つであると言うこともできます。 – Vikas