fun MutableList<out Any>.reorder(a: Int, b: Int){
val first = this[a]
val second = this[b]
removeAt(a)
add(a, second)
removeAt(b)
add(b, first)
}
add 函式給出編譯錯誤,說Required:Nothing,Found:Any。
當我將 <out Any> 更改為 <Any> 時,編譯錯誤消失了,但現在擴展 Any 的任何東西都無法訪問該函式。
有沒有辦法解決這個問題?
uj5u.com熱心網友回復:
由于您需要將事物從串列中取出并將事物放入串列中,因此兩者都in不起作用out。型別引數需要是不變的。
要使其適用于所有串列,您應該添加一個通用引數:
fun <T> MutableList<T>.reorder(a: Int, b: Int){
val first = this[a]
val second = this[b]
this[a] = second
this[b] = first
}
uj5u.com熱心網友回復:
關于什么:
fun <T> MutableList<T>.reorder(a: Int, b: Int) {
val first = this[a]
val second = this[b]
removeAt(a)
add(a, second)
removeAt(b)
add(b, first)
}
更新
對不起,重復一分鐘前沒有看到答案
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/418640.html
標籤:
