android - 每当我以非空断言的形式进行调用时,android studio 都会从其他相同的变量中删除警告
问题描述
每当我试图在一个函数中创建几个布尔变量时,它有 e:Entry? 在它的构造函数中,android studio 通知我只允许安全或非空断言调用。因此,每当我以非空断言的形式进行调用时,android studio 都会从其他变量中删除此警告,并且代码正在运行。为什么这样?
val isHighResult = e!!.y >= 3.5
val isMediumResult = e.y > 1.5 && e.y < 3.5
val isLowResult = e.y <= 1.5
解决方案
函数参数是常数。您的第一行代码保证e
不是 null,或者不会到达更多代码行,因为如果e
为 null,它将抛出 KotlinNullPointerException。e
因此从逻辑上讲,如果到达第二行代码,则不可能为null,编译器可以将其智能转换为不可为 null 的条目。
这不是可以使用的罕见情况之一!!
。如果您将其声明为可为空的函数参数,则该函数内的代码没有理由期望e
为非空。通过将其声明为可为空,您的函数(向使用它的程序员)宣布将 null 作为参数传递是安全的。
推荐阅读
- c - 打印单链表分段错误
- javascript - 对具有多个属性的 json 树进行排序
- mongodb - 如何监视 Azure Cosmos DB 当前打开的连接?
- ios - 当我更改 EnvironmentObject 值时,应用程序冻结
- c# - SignalR .NET 客户端:排除连接时跨连接处理广播
- html - css 悬停动画在 icomoon 中不起作用
- apache-kafka - 带有 max.request.size 参数的 kafka 流状态存储问题
- heroku - 尝试将 symfony 5 应用程序与 heroku 上的 redis 连接时出错
- vhdl - vhdl 中是否有检查端口是否已连接或打开的功能?
- arrays - 如何使用方括号制作 JSON 数组