sag*_*aga 3 null nullable kotlin kotlin-null-safety
看看这个kotlin one liner:
val nonNullArr : List<NonNullType> = nullArray.filter {it != null}
Run Code Online (Sandbox Code Playgroud)
编译器在此行给出类型错误,表示无法将空列表分配给非空值列表.但过滤条件确保列表仅包含非空值.有没有类似于!!运算符的东西,我可以在这种情况下使用这个代码编译?
假设编译器会考虑谓词似乎是合乎逻辑的
it != null
Run Code Online (Sandbox Code Playgroud)
并推断出类型
List<NonNullType>
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
有两种解决方案:
val nonNullList: List<NonNullType> = nullableArray.filterNotNull()
Run Code Online (Sandbox Code Playgroud)
要么
val nonNullList: List<NonNullType> = nullableArray.mapNotNull { it }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
809 次 |
| 最近记录: |