收到Callback类的启发，写了四种Fn，比以前一种GeneralFn要好多里