2015-02-01 17 views
5

Unterstützt Kotlin obere/untere Grenzen in einer Kovarianzeinstellung. Beispiel IKotlin und obere Typgrenzen mit Kovarianz

class Foo<out T> { 
    fun or<U of T or greater>(other: U): <U> = ... 
} 

die in Scala

class Foo[+T] { 
    def or[U >: T](other: U): U = ... 
} 

Aber der Compiler scheint nicht das mögen würde sagen wollen, klagt sie über die covarianceness des Typs Parameter T.

Antwort

5

Kotlin unterstützt an dieser Stelle keine Untergrenzen. Manchmal können Sie mit der Definition einer Erweiterungsfunktion statt eines Elements durchkommen:

fun <T> Foo<T>.or(other: T): T = ... 
+0

Und obere Grenzen nicht mit Kovarianz unterstützt? – monkjack

+0

Obere Grenzen sind für die Kovarianz unzuverlässig, also nicht erlaubt –

+2

Wie so, im Zusammenhang mit dem Beispiel, das ich gab, das ist in Scala's SDK allgemein üblich? – monkjack