dart - 检查 if 条件中使用的 bool 变量的可空性的简写
问题描述
Future<bool?> f() async => true;
void main() async {
final proceed = await f();
if (proceed) {...} // Error
if (proceed != null && proceed) {...} // Works but too verbose
}
是否有任何速记或更好的方法来代替写长proceed != null && proceed
支票?我知道我可能会错过一些如此微不足道的东西。
注意:我知道可以提供默认值,proceed
但这不是我的用例。Bang 运算符可以做到这一点,但bool
实际上不是null
。
解决方案
听起来像是您可以使用??
语言导览中记录的运算符的情况:
https ://dart.dev/guides/language/language-tour#conditional-expressions
它将允许您将长 if 语句重写为:
if (proceed ?? false) {...}
??
在这里意味着我们要使用的值proceed
只要不是null
。如果null
我们想false
用作值。
这样做的一个缺点是,与之后被提升为不可为空的类型proceed
相比,Dart 似乎没有进行任何类型提升:proceed
if (proceed != null && proceed) {...}
不确定是否存在 Dart 问题。
推荐阅读
- exif - EXIF 59932 (0xea1c) 填充标签的预期用途是什么?
- php - 在 eloquent 的关系结果中添加额外的列
- ios - 你如何归档使用 Flutter 创建的 Runner.app?
- python - Jinja 2 - 过滤器优化(日期时间格式化程序)
- python - 如何访问序列化程序中的模型选择并获取 json 视图
- parameters - /SL5、/SPAWNWND、/NOTIFYWND 和 /DEBUGWND 参数在 Inno Setup 中是什么意思?
- r - 不确定数据表分配/管道在 R 中的工作方式
- multithreading - 在单独的线程中填充 ComboBox
- python - 在数据框熊猫的一列上应用唯一/不同后获取其他列
- javascript - 基于Javascript中的内部数组对外部对象进行排序