Ich versuche, etwas zu tun, dass ich nicht sicher bin, ob Scala Typ-System mir gestatten zu tun.Erstellen Schließung von Generic in Scala
Ich möchte im Grunde eine Schließung von einer generischen Definition erstellen und diese Schließung zurückgeben, während eine Funktion innerhalb des gleichen Typs ausführen.
Zum Beispiel:
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
Theoretische Beispiel für eine Definition:
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)
}
}
})
}
}
Dies würde dann erlauben Sie mir zu schaffen asynchrone Rückrufe für SWT ein einfaches System zu haben, während SWT halten aus meiner Geschäftslogik.
möglich Duplikat [Scala Generika - warum ich nicht parametrisierte Objekt innerhalb generische Klasse erstellen] (http://stackoverflow.com/questions/5336648/scala-generics-why-i-cant-create-parametrised- Objekt-inside-generic-Klasse) –
ich glaube nicht, es ist ein 100% doppelte, denn selbst wenn ich eine Klasse des Typs T mit einer Anwendung Methode erstellen, würde ich immer noch in den richtigen Parametern durch T. Anspruch nehmen wollen, müssen jedoch , Typ Löschung kann dieses spezielle Problem unmöglich zu lösen machen. – Hakkar