类内泛型递归函数上的Kotlin类型不匹配
我有一个类,用于计算所有有序集的集合:类内泛型递归函数上的Kotlin类型不匹配,kotlin,generics,Kotlin,Generics,我有一个类,用于计算所有有序集的集合: class PowerSet<T>(val inputSet: List<T>, val minLength: Int = 4) { private var combinations = mutableListOf<MutableList<T>>() init { powerset(listOf(), inputSet) } private fun <
class PowerSet<T>(val inputSet: List<T>, val minLength: Int = 4) {
private var combinations = mutableListOf<MutableList<T>>()
init {
powerset(listOf(), inputSet)
}
private fun <T> powerset(curr: List<T>, left: List<T>) {
if (curr.size > this.minLength) {
combinations.add(curr)
}
if (left.isEmpty()) {
return
}
for ((index, value) in left.withIndex()) {
val subList = left.subList(0, index) + left.subList(index + 1, left.size)
val newList = curr + listOf(value)
powerset(newList, subList)
}
}
}
class电源集(val输入集:列表,val最小长度:Int=4){
私有变量组合=mutableListOf()
初始化{
电源集(listOf(),inputSet)
}
私人娱乐动力集(当前:列表,左:列表){
如果(curr.size>this.minLength){
组合。添加(当前)
}
if(left.isEmpty()){
返回
}
对于左.withIndex()中的((索引,值){
val subList=left.subList(0,索引)+left.subList(索引+1,left.size)
val newList=curr+listOf(值)
电源集(新列表,子列表)
}
}
}
出现以下错误:
Type mismatch.
Required:
MutableList<T#1 (type parameter of com.example.PowerSet)>
Found:
List<T#2 (type parameter of com.example.PowerSet.powerset)>
类型不匹配。
必修的:
可变列表
发现:
列表
不知道为什么会发生这种情况。这是因为您的方法
powerset
有自己的类型参数T
您应该删除那里的
,因为您希望T
与类的T
相同:
private fun powerset(当前:列表,左:列表){
// ...
}
那么我想你也可能对List
vsMutableList
有问题。
curr
是一个列表
,因此不能将其添加到组合
,该组合需要类型为可变列表
的元素
您可以使用toMutableList()
将列表
转换为可变列表
:
compositions.add(curr.toMutableList())
这是因为您的方法powerset
有自己的类型参数T
您应该删除那里的
,因为您希望T
与类的T
相同:
private fun powerset(当前:列表,左:列表){
// ...
}
那么我想你也可能对List
vsMutableList
有问题。
curr
是一个列表
,因此不能将其添加到组合
,该组合需要类型为可变列表
的元素
您可以使用toMutableList()
将列表
转换为可变列表
:
compositions.add(curr.toMutableList())