1

処理のために小さなチャンクに分割したい大きなリストがあると想像してください:

def chunkSize = 10
def listSize = aBigList.size()
for(def i = 0; i < listSize; i += chunkSize) {
    def startOfRange = i
    def endOfRange = (listSize - 1) < (i + increment - 1) ? (listSize - 1) : (i + increment - 1) // There has got to be a better way!
    def chunk = aBigList[startOfRange..endOfRange]
    // do something with chunk
}

変数を取得するためのコードは醜くてグルーヴィーではありませんが、例外endOfRangeを防ぐために必要です。Index Out of Boundsこれを行うより良い方法はありますか?

4

1 に答える 1

4

collat​​eを使用できませんか?

def chunks = aBigList.collate( chunkSize )

そうでない場合、コードを修正すると、次のようになります。

def chunkSize = 10
def listSize = aBigList.size()
for( i = 0; i < listSize; i += chunkSize ) {
    def endOfRange = i + chunkSize - 1 >= aBigList.size() ? -1 : i + chunkSize - 1
    def chunk = aBigList[ i..endOfRange ]
    // do something with chunk
}

aBigListしかし、本当に巨大でない限り、照合はおそらく進むべき道です;-)

于 2013-08-28T14:34:55.767 に答える