【发布时间】:2021-06-14 20:54:52
【问题描述】:
我有一个返回类型为List<T?>? 的函数。我知道我可以使用! 运算符将此返回类型转换为List<T?>,但是如何将其转换为List<T>?
我尝试过的代码:
// testFunction returns List<T?>?
var test = testFunction() as List<T>? ?? [];
结果:
The following _CastError was thrown building ...:
type 'List<T?>' is not a subtype of type 'List<T>?' in type cast
【问题讨论】:
-
您必须
map覆盖元素并将每个元素从T?转换为T。你想如何处理空值?您有三个选项:1) 强制展开和崩溃(断言任何值都不应该为空),2) 用??替换默认值,或 3)filter将空元素排除在外,只保留非空值。 -
成功了!谢谢@Alexander - 我认为答案将是一些我还没有偶然发现的晦涩符号。幸好没有!