Я пытался создать LazyList из серии элементов, в данном случае блоков, к которым нужно обращаться в трехмерном массиве, как в моде.
def getBlocks: LazyList[Block] = getBlocks(min.x, min.y, min.z)
private def getBlocks(x: Int, y: Int, z: Int): LazyList[Block] = {
val (nextX, nextY, nextZ) = {
if (z == max.z) (x, y + 1, min.z)
else if (y == max.y) (x + 1, min.y, min.z)
else (x, y, z + 1)
}
if (y > max.y) LazyList.empty
else worldService.getBlock(world, x, y, z) #:: getBlocks(nextX, nextY, nextZ)
}
Генерация Список получился довольно чистым, но я чувствую, что должен быть лучший способ позаботиться об увеличении значений x, y и z в том же порядке, что и в 3 вложенных циклах for (где min.x <= x <= max.x
, et c.