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