【发布时间】:2022-07-21 21:20:37
【问题描述】:
我尝试编写一个简单的泛型方法来迭代复制嵌套的List,例如List<List<int>>。但不幸的是,递归调用似乎总是返回List<dynamic>,所以我得到以下错误
The argument type List<dynamic> can't be assigned to the parameter type T
List<T> listDeepCopy<T>(List<T> list){
List<T> newList = List<T>();
list.forEach((value) {
if( value is List ){
newList.add(listDeepCopy(value)); // <-- listDeepCopy() always returns List<dynamic>
}
else{
newList.add(value);
}
});
return newList;
}
所以如果我打电话
List<List<int>> list = [[1,2],[3,4]];
List<List<int>> copy = listDeepCopy(list);
T 是List<int>
value 是T - 即List<int>
listDeepCopy(value) 应该等于listDeepCopy<List<int>>,这将返回一个List<int>,它应该可以添加到newList,这是一个List<List<int>>
我在哪里出错了,我怎样才能使这样的事情起作用?
【问题讨论】: