我正在嘗試做一些我不確定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