我可以强制进行非最佳逻辑条件检查吗?
Can I force unoptimal logical condition checking?
是否可以更改逻辑或 ||
语句在 dart 中执行的方式。
例如。我有函数 foo()
和 boo()
,它们的 return 类型为 bool
。如果我写
(foo() || boo()) ? /* A */ : /* B */;
和foo()
returns true boo()
不会被执行。我希望能够改变它,但找不到这样做的方法。
我惊讶地发现这没有帮助:
bool helper = false;
helper = helper || foo();
helper = helper || boo();
(helper) ? /* A */ : /* B */
non-short-circuit boolean operators 是您要查找的词组,目前无法找到,请参阅https://github.com/dart-lang/sdk/issues/1080
boo()
仅在 foo()
returns 为真时执行,因为无论如何结果都是假的(短路)。您必须强制执行显式执行,例如:
var f = foo();
var b = boo();
(f || b) ? print('false') : print('true');
如果您想内联使用它,您可以使用@AlexandreArdhuin 或
提到的自定义方法
[foo(), boo()].reduce((v1, v2) => v1 || v2)
? print('false') : print('true');
在 DartPad 试试吧。
你 can not use |
in dart 但你可以编写一个像 or
这样的辅助函数并且语法非常接近:
main() {
if (or([foo(), boo()])) {
print('ok');
}
}
bool or(List<bool> values) => values.fold(false, (t, e) => t || e);
bool foo() {
print("foo");
return true;
}
bool boo() {
print("boo");
return true;
}
在 DartPad 中尝试。
是否可以更改逻辑或 ||
语句在 dart 中执行的方式。
例如。我有函数 foo()
和 boo()
,它们的 return 类型为 bool
。如果我写
(foo() || boo()) ? /* A */ : /* B */;
和foo()
returns true boo()
不会被执行。我希望能够改变它,但找不到这样做的方法。
我惊讶地发现这没有帮助:
bool helper = false;
helper = helper || foo();
helper = helper || boo();
(helper) ? /* A */ : /* B */
non-short-circuit boolean operators 是您要查找的词组,目前无法找到,请参阅https://github.com/dart-lang/sdk/issues/1080
boo()
仅在 foo()
returns 为真时执行,因为无论如何结果都是假的(短路)。您必须强制执行显式执行,例如:
var f = foo();
var b = boo();
(f || b) ? print('false') : print('true');
如果您想内联使用它,您可以使用@AlexandreArdhuin 或
提到的自定义方法[foo(), boo()].reduce((v1, v2) => v1 || v2)
? print('false') : print('true');
在 DartPad 试试吧。
你 can not use |
in dart 但你可以编写一个像 or
这样的辅助函数并且语法非常接近:
main() {
if (or([foo(), boo()])) {
print('ok');
}
}
bool or(List<bool> values) => values.fold(false, (t, e) => t || e);
bool foo() {
print("foo");
return true;
}
bool boo() {
print("boo");
return true;
}
在 DartPad 中尝试。