为什么这个方法调用有效,但在代码中却不起作用?

Why does this method call work, but not in lining the code?

所以在这个方法中,while 循环的条件是我选择在行代码中删除的东西,并创建一个在需要时调用的方法。但是,第一种方法不起作用,并导致应用程序静默锁定。

def getLineRows( rows, index ) {
    def lineRows = [rows[index]]
    def newOperator
    def i = index + 1
    if ( index <= ( rows.size() - 1 ) ) {
        newOperator = false

这是有问题的代码。

        while ( index <= ( rows.size() - 1 ) && !newOperator ) {
            if ( rows[index].PGM_PROC_OPE.trim() == "" ||
                ( rows[index].PGM_PROC_TY == "OR" ||
                  rows[index].PGM_PROC_TY == "AN" ) ) {
                lineRows << rows[i]
            } else {
                newOperator = true
            }
            i++
        }
    }
    return lineRows
}

在这第二个视觉上相同的方法中,我只是创建了一个名为 moreRows(rows, index) 的方法。还有其他两个方法调用,但已通过测试将其排除在考虑之外。

def moreRows( rows, index ) {
    return index <= ( rows.size() - 1 )
}

当使用 moreRows 而不是上面的 moreRows 所在的方法时,什么会导致下面的代码正常运行?

def getLineRows( rows, index ) {
    def lineRows = [rows[index]]
    def newOperator
    def i = index + 1
    if ( moreRows( rows, i ) ) {
        newOperator = false
        while ( moreRows( rows, i ) && !newOperator ) {
            if ( operatorEmpty( rows, i ) || isSpecialProcType( rows, i ) ) {
                lineRows << rows[i]
            } else {
                newOperator = true
            }
            i++
        }
    }
    return lineRows
}

您定义 i 并在循环中递增它,但不要在您的 while 语句中使用它

while ( index <= ( rows.size() - 1 ) && !newOperator ) {

所以你在这里进入了一个无限循环。