请解释这个Java布尔逻辑语句

asc*_*sco 1 java

boolean allValid = true;
for (FormEditText field: allFields) {
    allValid = field.testValidity() && allValid;
}
Run Code Online (Sandbox Code Playgroud)

我想只有在每一个都是真的的allValid情况下true才会field.testValidity这样,但是这种陈述是如何被称呼的,或者它是如何起作用的?

Bat*_*eba 5

如果且仅当所有结果field.testValidity()都为真时,将变量设置为真是一种相当神秘和浪费的方式.

我更喜欢以下内容,因为它更有效率; 除非testValidity()需要在出于某种原因,集合中的每一项被称为(在这种情况下,功能真的应该被重新命名):

boolean allValid = true;
for (FormEditText field: allFields) {
    if (!field.testValidity()){
        allValid = false;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这是一个完全不同的语义.如果testValid()改变某些状态怎么办? (3认同)
  • 这看起来好多了.然而,这迫使我吹嘘我们在Python中有多好:`all(field.testValidity()for allFields中的字段)`:) (2认同)