【问题标题】:Apply Function to while loop in Java将函数应用于Java中的while循环
【发布时间】:2016-02-15 16:41:42
【问题描述】:

我有while 循环,它应该在condition1 为真或condition2 为真时运行。 12 大小写取决于一些初始布尔条件。

现在我将其实现为三元运算符,但我想了解如何使用 Predicate 和 lambda 表达式来完成。 有人可以提供一个例子吗?如何声明一个 Function 变量并将其放入 while 循环条件中?

boolean initialCondition = stopBtn.getText().length() > 0;

while(initialCondition ? stopBtn.waitToBeHidden() : stopBtn.isDisplayed()) {
    if (a++ < 5) {
        stopBtn.click();
    }
}
return this;

【问题讨论】:

  • 你能展示一些你想要实现的伪代码吗?我不太清楚你想在哪里应用谓词...

标签: java function lambda predicate


【解决方案1】:

我认为即使在谓词中你也需要你的 if/else。

如果您提供更多代码,可能会更容易看到您的目标。使用谓词(然后您可以传递等)的一种方法是:

Predicate<StopBtnClass> pred = btn -> btn.getText().length() > 0 ? btn.waitToBeHidden() : btn.isDisplayed();

while(pred.test(stopBtn)) {
    ...

【讨论】:

  • 是的,我了解谓词中的 if/else。我只是在尝试在“while”条件下应用谓词时感到困惑。我忘记了 .test(...) 方法。但是你的例子比你更适合我!
【解决方案2】:

您可以使用BooleanSupplier 来模拟条件:

java.util.function.BooleanSupplier condition = stopBtn.getText().length() > 0 ?
     stopBtn::waitToBeHidden : 
     stopBtn::isDisplayed;

while (condition.getAsBoolean()) {
    ...
}

【讨论】:

    猜你喜欢
    • 2011-12-28
    • 2021-04-30
    • 2016-03-19
    • 2016-11-27
    • 1970-01-01
    • 2014-03-29
    • 2023-02-22
    • 2018-04-13
    • 2021-12-03
    相关资源
    最近更新 更多