代码之家  ›  专栏  ›  技术社区  ›  Bohdan Nesteruk

将函数应用于Java中的while循环

  •  2
  • Bohdan Nesteruk  · 技术社区  · 8 年前

    我有 while 应该运行的循环 condition1 为true或while condition2 是真的。 1 2 大小写取决于一些初始布尔条件。

    现在我将其实现为三元运算符,但我想了解如何使用谓词和lambda表达式来实现这一点。 有人能举个例子吗?如何声明Function变量并将其放入 虽然 循环条件?

    boolean initialCondition = stopBtn.getText().length() > 0;
    
    while(initialCondition ? stopBtn.waitToBeHidden() : stopBtn.isDisplayed()) {
        if (a++ < 5) {
            stopBtn.click();
        }
    }
    return this;
    
    2 回复  |  直到 8 年前
        1
  •  5
  •   Dennis Hunziker    8 年前

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

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

    Predicate<StopBtnClass> pred = btn -> btn.getText().length() > 0 ? btn.waitToBeHidden() : btn.isDisplayed();
    
    while(pred.test(stopBtn)) {
        ...
    
        2
  •  4
  •   wero    8 年前

    您可以使用 BooleanSupplier 为条件建模:

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