Java 切换布尔值,但只切换一次?(爪哇)
偶尔需要在循环中只存储一次布尔值(以记录它已从false更改为true,反之亦然),同时执行循环直到结束,但不再关心布尔值的更改。例如:Java 切换布尔值,但只切换一次?(爪哇),java,boolean,toggle,Java,Boolean,Toggle,偶尔需要在循环中只存储一次布尔值(以记录它已从false更改为true,反之亦然),同时执行循环直到结束,但不再关心布尔值的更改。例如: public static boolean dbDelete(Collection argObjectCollectionToDelete) { boolean result = true; for (Object object : argObjectCollectionToDelete) {
public static boolean dbDelete(Collection argObjectCollectionToDelete) {
boolean result = true;
for (Object object : argObjectCollectionToDelete) {
boolean dbDelete = dbDelete(object);
if (!dbDelete) {
result = false;
}
}
return result;
}
是否有某种方法来执行代码的等效项
if (!dbDelete) {
result = false;
}
或
以更优雅的方式,最好是一行?怎么样:
result &= dbDelete(object);
这相当于:
result = result & dbDelete(object);
因此,只有当
result
以前为true并且dbDelete
返回true时,它才会为true。result=dbDelete(对象)?结果:假 尝试在变量名中添加更多含义-这会使事情变得更简单
if (!dbDelete(object)) {
result = false;
}
public static boolean dbDelete(Collection argObjectCollectionToDelete) {
boolean completedSuccessfully = true;
for (Object object : argObjectCollectionToDelete) {
boolean dbDelete = dbDelete(object);
if (completedSuccessfully && !dbDelete) { //won't change anymore after failure
completedSuccessfully = false;
}
}
return completedSuccessfully;
}
肯定比我的答案要短,但至少对我来说,更难阅读。@nfechner:复合作业是一种后天习得的嗜好,但我认为,即使你自己不经常使用,至少也值得对它们感到舒服一点。只是偶尔这样的事情会产生巨大的变化——特别是在可以使用单个表达式而不是
if
块的情况下。非常好,我想要这样的东西。:)“虽然执行循环到最后,但不再关心布尔值的变化”,我只是更新了它。现在,它只能从true转换为false,而不能返回true。如果有任何方法返回true,则另一面是b |=method()
。
public static boolean dbDelete(Collection argObjectCollectionToDelete) {
boolean completedSuccessfully = true;
for (Object object : argObjectCollectionToDelete) {
boolean dbDelete = dbDelete(object);
if (completedSuccessfully && !dbDelete) { //won't change anymore after failure
completedSuccessfully = false;
}
}
return completedSuccessfully;
}