Shorthand 检查 if 条件中使用的 bool 变量的可空性
Shorthand of checking the nullability of a bool variable used in an if condition
Future<bool?> f() async => true;
void main() async {
final proceed = await f();
if (proceed) {...} // Error
if (proceed != null && proceed) {...} // Works but too verbose
}
是否有任何 shorthand 或更好的方法来代替编写长 proceed != null && proceed
支票?我知道我可能会遗漏一些如此微不足道的东西。
注意:我知道可以为 proceed
提供默认值,但这不是我的用例。当 bool
实际上不是 null
.
时,Bang 运算符可以做到这一点
听起来像是可以使用语言教程中记录的 ??
运算符的情况:
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 问题。
Future<bool?> f() async => true;
void main() async {
final proceed = await f();
if (proceed) {...} // Error
if (proceed != null && proceed) {...} // Works but too verbose
}
是否有任何 shorthand 或更好的方法来代替编写长 proceed != null && proceed
支票?我知道我可能会遗漏一些如此微不足道的东西。
注意:我知道可以为 proceed
提供默认值,但这不是我的用例。当 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 问题。