我正在尝试做一些我不确定Scala的类型系统是否允许我这样做的事情。在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出来的我商业逻辑。
可能的重复[斯卡拉泛型 - 为什么我不能在泛型类中创建参数化对象?](http://stackoverflow.com/questions/5336648/scala-generics-why-i-cant-create-parametrised- object-inside-generic-class) – 2012-07-15 23:49:14
我不认为它是100%重复的,因为即使我用apply方法创建了一个类型为T的类,我仍然需要接受由T提供的适当参数。 ,类型擦除可能会使这个特定的问题无法解决。 – Hakkar 2012-07-16 02:24:16