是否可以更改whay逻辑或||
语句在dart中执行。
例如。我的函数foo()
和boo()
的返回类型为bool
。如果我写
(foo() || boo()) ? /* A */ : /* B */;
和foo()
返回true boo()
将不会被执行。我希望能够改变这种状况,但无法找到办法。
我很惊讶地发现这无济于事:
bool helper = false;
helper = helper || foo();
helper = helper || boo();
(helper) ? /* A */ : /* B */
答案 0 :(得分:3)
非短路布尔运算符是您正在寻找的短语,目前无法实现,请参阅https://github.com/dart-lang/sdk/issues/1080
答案 1 :(得分:3)
boo()
仅在foo()
返回true时执行,因为无论如何结果都是假的(短路)。你必须强制显式执行,如:
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中试用。
答案 2 :(得分:3)
你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中试用。