我注意到我的编码有些不确定。假设我们有一个二维数组,一个矩阵或一个表,并且正在浏览它以检查每个行或嵌套维的属性是否为true。
假设我有一个布尔标志,该标志用于检查属性是true还是false。我的选择是:
将其初始化为true,并检查每个单元格,直到证明为false。这个
给它一个错误的名字,直到代码
完全执行。
从false开始,并检查每一行,直到证明为true为止。只有所有行都为真,数据才是正确的。没有计数器,最干净的方法是什么?
我一直不知所措地完成了1项任务,但今天却让我感到奇怪。那2呢?
最佳答案
它们实际上实际上是同一件事,并且因为您说“检查每个行或嵌套维的属性是否正确”,所以我认为第一种方法更容易阅读,也许稍微快一点。
在代码完全执行完之前,您不应该尝试读取标志的值,因为检查尚未完成。如果您正在运行异步代码,则应防止在不稳定时访问该值。
在执行代码之前,这两种方法都会“给出错误的名称”。 1给出假阳性,2给出假阴性。我不确定您要通过说什么来避免发生什么-如果您可以在完全运行代码之前获得“正确”的值,那么您根本就没有在运行代码。
如何在没有计数器的情况下实现它们(如果您的语言没有foreach
语法,请使用适当的enumerator->next
循环语法):
1:
bool flag = true;
foreach(item in array)
{
if(!check(item))
{
flag = false;
break;
}
}
2:
bool flag = false;
foreach(item in array)
{
if(!check(item))
{
break;
}
else if(item.IsLast())
{
flag = true;
}
}
关于language-agnostic - 直到被证实为真还是被证实为假?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/795760/