dart - Dart null 安全条件语句?
问题描述
所以我有一个类Cache
,它有一个compare
返回bool
.
我有一个可以为空的此类的实例。
Cache? recent;
recent
我想在isnot null
和compare
返回时执行一段代码false
如果没有零安全性,我就会这样做
if(recent!=null && !recent.compare()){
//code
}
如何在启用空安全性的情况下做同样的事情?
当我在上面尝试零安全时,我得到
不能无条件调用“比较”方法,因为接收者可以为“空”。尝试使调用有条件(使用'?.')或向目标添加空检查('!')
当我在下面尝试时
if(!recent?.compare()){
//code
}
它给了我
可空表达式不能用作条件。在将其用作条件之前,请尝试检查该值是否不是“空”。
解决方案
您可以通过以下方式解决此问题
使用局部变量(推荐)
var r = recent; // Local variable if (r != null && !r.compare()) { // ... }
使用 Bang 运算符 (
!
)if (!recent!.compare()) { // ... }
推荐阅读
- python - `django-cognito-jwt` get_public_key 方法中的 TokenValidator 返回无
- mongodb - 带有 ISO-Date %G 的 MongoDB dateFromString 错误
- asp.net-mvc-4 - 使用 Code-First 的另一个模式中的外键在添加迁移时创建了两次引用的表
- c# - 在 ASP.NET C# 中将 Gridview 行转换为列
- javascript - Qt5 - QML - AirLink RV50 - JavaScript:如何在第三方路由器上自动触发组合框和按钮
- python - 在 Pytorch 教程期间发生 ModuleNotFoundError: 'pycocotools._mask'
- python - 使用 if/else 和 for 循环将项目附加到列表理解中的列表
- python - 使用 selenium 读取多个文本元素时出现错误消息
- c++ - 如何在另一个文件夹中使用 JetAPI 恢复 ES 数据库?
- javascript - React - 带钩子的 5 秒倒计时