我正在尝试做一些我不确定 Scala 的类型系统是否允许我做的事情。
我基本上想从通用定义创建一个闭包并返回该闭包,同时在内部执行相同类型的函数。
例如:
val f = async[(str:String, i:Int, b:BigInt) => Unit]({ (String, Int, BigInt) =>
// Code here...
})
// 'f' would have a type of (String, Int, BigInt) => Unit and would wrap the passed anonymous function
定义的理论示例:
def async[T](
shell: Shell,
success: T,
failure: (Throwable) => Unit): T = {
new T {
val display = shell.getDisplay()
display.asyncExec(new Runnable() {
def run(): Unit = {
try {
success(_)
} catch {
case e:Throwable =>
failure(e)
}
}
})
}
}
这将允许我拥有一个为 SWT 创建异步回调的简单系统,同时将 SWT 排除在我的业务逻辑之外。