Scala для доходности с несколькими условиями - PullRequest
0 голосов
/ 01 марта 2020

У меня есть объект bitmap, представляющий собой трехмерный массив с третьим измерением, равным 3. Я хочу разбить его на блоки размером 64x64x3. Для этого у меня есть следующий фрагмент кода:

val tiles: someType = for {

  x <- bitmap.indices by 64
  y <- bitmap(0).indices by 64


  data = for {
    //For all X and Y within one future tile coordinates
    tx <- x until x + 64
    ty <- y until y + 64
  } yield bitmap(tx)(ty)

...
}

В data для l oop yield вызовет ArrayIndexOutOfBoundsException на последнем фрагменте. Как я могу проверить, не превышают ли x и y границы массива в этом l oop? Возможно ли иметь несколько until условий для одной и той же переменной в одном и том же l oop?

1 Ответ

2 голосов
/ 01 марта 2020

Как насчет этого?

val tiles: someType = for {
  x <- bitmap.indices by 64
  y <- bitmap(0).indices by 64

  data = for {
    //For all X and Y within one future tile coordinates
    tx <- x until math.min(x + 64, bitmap.length)
    ty <- y until math.min(y + 64, bitmap(0).length)
  } yield bitmap(tx)(ty)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...