我有while
循环,它应该在condition1
为真或condition2
为真时运行。 1
或2
大小写取决于某些初始布尔条件。
现在我将其实现为三元运算符,但我想了解如何使用Predicate和lambda表达式完成此操作。
有人可以提供一个例子吗?如何声明Function变量并将其置于while
循环条件中?
boolean initialCondition = stopBtn.getText().length() > 0;
while(initialCondition ? stopBtn.waitToBeHidden() : stopBtn.isDisplayed()) {
if (a++ < 5) {
stopBtn.click();
}
}
return this;
答案 0 :(得分:4)
我认为即使在谓语中你也需要你的if / else。
如果您提供更多代码,可能会更容易看到您的目标。使用谓词(然后可以传递等)的一种方法是:
Predicate<StopBtnClass> pred = btn -> btn.getText().length() > 0 ? btn.waitToBeHidden() : btn.isDisplayed();
while(pred.test(stopBtn)) {
...
答案 1 :(得分:3)
您可以使用BooleanSupplier
对条件进行建模:
java.util.function.BooleanSupplier condition = stopBtn.getText().length() > 0 ?
stopBtn::waitToBeHidden :
stopBtn::isDisplayed;
while (condition.getAsBoolean()) {
...
}