我注意到我的编码有些不确定。假设我们有一个二维数组,一个矩阵或一个表,并且正在浏览它以检查每个行或嵌套维的属性是否为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/

10-12 21:34