有时我必须实现自定义拖放等功能。代码可能是这样的:
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 中执行此操作的更好方法,任何想法和建议都会受到赞赏?