カスタマイズしたドラッグ アンド ドロップなどの機能を実装する必要がある場合があります。コードは次のようになります。
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
// ...
}
これがうまく機能することはわかっていますが、冗長な変数や、このようなものに対する個別の手順はまったく好きではありません。IP(命令型プログラミング)では、それは避けられないかもしれません。私の質問は、FP(関数型プログラミング)でこのようなことを処理するより良い方法はありますか? プログラミング言語、Lisp、Scheme、F#、Ruby など、または IP でこれを行うためのより良い方法に関係なく、アイデアや提案は大歓迎です。