時々私はカスタマイズされたドラッグ&のドロップのような機能を実装する必要があります。コードは次のようになりますことがあります。マウスイベント処理をより簡単にするには?
bool mouse_down = false;
Vec2 mouse_pos;
void on_mouse_down() {
mouse_down = true;
mouse_pos = cursor_pos();
}
void on_mouse_move() {
if(mouse_down) {
Vec2f c = cursor_pos();
Vec2f d = c - mouse_pos;
// dragging. make objects tracing the cursor.
// ...
}
}
void on_mouse_up() {
mouse_down = false;
// dropped
// ...
}
私は、これは正常に動作します知っているが、私は冗長な変数や、全くこのような何かのために分離手順のようdonnot。 IP(命令的プログラミング)では、やむを得ないことかもしれません。私の質問は、FP(関数型プログラミング)のこのようなことに対処する良い方法はありますか?どんなプログラミング言語、Lisp、Scheme、F#、Rubyなどに関係なく、IPでこれを行うにはどんなアイデアや提案もありがたいですか?
どのような冗長変数ですか? –
上記のコードはほんの一例です。カーソルを別のオブジェクトに移動しながら、左、右、中央、ホイール、ダブルクリック、別の操作など、システム全体に多くの機能と制限を追加すると、変数のアカウントが爆発する... –