如何在 Dart 空值安全之后对空值进行多重检查?
How to do a multi check for null values after Dart null safety?
int? foo, bar, baz;
bool get allGood => foo != null && bar != null && baz != null;
void f1() {
if (allGood) {
print('${foo.abs()} ${bar.abs()} ${baz.abs()}}'); // Error
}
}
void f2() {
if (allGood) {
print('${foo.ceil()} ${bar.ceil()} ${baz.ceil()}}'); // Error
}
}
在空安全之前,我一直在我的项目中使用这个模式,但目前它导致了一个错误。我知道在检查 if
条件时我可以使用 variable!.function()
但是有没有更好的写法我不知道。
我要做的是内联检查:
void f1() {
var foo = this.foo, bar = this.bar, baz = this.baz;
if (foo != null && bar != null && baz != null) {
print('${foo.abs()} ${bar.abs()} ${baz.abs()}}');
}
}
如果我真的想要重用测试代码,我会做类似的事情:
void ifAllGood(void Function(int, int, int) action) {
var foo = this.foo, bar = this.bar, baz = this.baz;
if (foo != null && bar != null && baz != null) {
action(foo, bar, baz);
}
}
void f1() {
ifAllGood((foo, bar, baz) {
print('${foo.abs()} ${bar.abs()} ${baz.abs()}}');
});
}
void f1() {
ifAllGood((foo, bar, baz) {
print('${foo.ceil()} ${bar.ceil()} ${baz.ceil()}}');
});
}
不太可能值得那么复杂。
int? foo, bar, baz;
bool get allGood => foo != null && bar != null && baz != null;
void f1() {
if (allGood) {
print('${foo.abs()} ${bar.abs()} ${baz.abs()}}'); // Error
}
}
void f2() {
if (allGood) {
print('${foo.ceil()} ${bar.ceil()} ${baz.ceil()}}'); // Error
}
}
在空安全之前,我一直在我的项目中使用这个模式,但目前它导致了一个错误。我知道在检查 if
条件时我可以使用 variable!.function()
但是有没有更好的写法我不知道。
我要做的是内联检查:
void f1() {
var foo = this.foo, bar = this.bar, baz = this.baz;
if (foo != null && bar != null && baz != null) {
print('${foo.abs()} ${bar.abs()} ${baz.abs()}}');
}
}
如果我真的想要重用测试代码,我会做类似的事情:
void ifAllGood(void Function(int, int, int) action) {
var foo = this.foo, bar = this.bar, baz = this.baz;
if (foo != null && bar != null && baz != null) {
action(foo, bar, baz);
}
}
void f1() {
ifAllGood((foo, bar, baz) {
print('${foo.abs()} ${bar.abs()} ${baz.abs()}}');
});
}
void f1() {
ifAllGood((foo, bar, baz) {
print('${foo.ceil()} ${bar.ceil()} ${baz.ceil()}}');
});
}
不太可能值得那么复杂。