-3
所以在这种方法中,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进行比较而不是索引。谢谢! – kschmit90 2015-01-26 20:24:18