为什么这个方法调用有效,但在代码中却不起作用?
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 ) {
所以你在这里进入了一个无限循环。
所以在这个方法中,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 ) {
所以你在这里进入了一个无限循环。