2015-02-01 20 views
5

Kotlin có hỗ trợ giới hạn trên/dưới trong cài đặt hiệp phương sai không. Ví dụ, tôi muốn nóiKotlin và giới hạn kiểu trên với hiệp phương sai

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

mà trong Scala sẽ

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

Nhưng trình biên dịch có vẻ không như thế này, nó than phiền về covarianceness của một tham số kiểu T.

Trả lời

5

Kotlin không hỗ trợ giới hạn dưới tại thời điểm này. Đôi khi bạn có thể thoát khỏi việc xác định chức năng mở rộng thay vì một thành viên:

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

Và giới hạn trên không được hỗ trợ hiệp phương sai? – monkjack

+0

Giới hạn trên là không hợp lệ cho hiệp phương sai, do đó không được phép –

+2

Làm thế nào, trong bối cảnh của ví dụ tôi đã cho rằng là phổ biến trong suốt SDK của Scala? – monkjack

Các vấn đề liên quan