Ich habe eine Klasse, die wie folgt aussieht:Gibt es eine Möglichkeit, in Scala eine Teilmenge von Typparametern anzugeben, um den Rest abzuleiten?
class X[A <: Throwable, B, C](b: B, c: C)
A, B und C geschlossen werden kann, so kann ich es nur mit instanziiert:
val x = new X(3, 4)
die mir ein X gibt [Nichts, Int, Int] - oft was ich will.
aber ich möchte manchmal angeben, dass A etwas anderes als Nothing sein soll (sagen Sie AssertionError). Ist dies möglich, ohne auch die Angabe B und C. Ich stellte mir Syntax entlang der Linien von:
val x = new X[AssertionError](3, 4)
val x = new X[AssertionError, _, _](3, 4)
val x = new X[AssertionError,,](3, 4)
aber offensichtlich funktioniert das nicht.
Gibt es eine Syntax dafür, oder kann ich das gleiche Ergebnis erzielen?
Und das Tolle daran ist, dass Sie immer noch explizit die Rest Typ Parameter festlegen können: 'val x = new P [Int, Lang] (1, 2)' kompiliert und korrekt Typ sein, wie 'X [AssertionError, Int, Long] 'anstelle des Standard-' X [AssertionError, Int, Int] ' –
Es sieht so aus, als ob Sie eine Snapshot-Version von Scala 2.10 verwenden ... Vielleicht möchten Sie die endgültige Version 2.10.0 ! –
Ich frage mich, ob es irgendwelche praktischen Unterschiede zwischen Ihrem Typ-Alias 'P' und meinem' XAssertionError' gibt. Sind sie nicht für alle praktischen Zwecke identisch? –