(Scala) Получить индекс текущей итерации доходности с циклом? - PullRequest
0 голосов
/ 13 июня 2018

Я столкнулся с этой проблемой, которую я не знаю, как решить ... У меня есть текст в форме квадрата.Например, вот так:

x xxxx
xxx xx
x xxxx
xx xxx

Я хочу получить каждую горизонтальную линию и вертикальную линию и назначить координаты их начальным позициям, начиная сверху вниз слева направо (где верхний левый угол равен (0; 0)).Однако в Scala это кажется простым, когда в моем коде используется цикл for, и у меня нет индекса текущих итераций (как у foreach нет индекса в c #).Подобные ошибки приводят меня в замешательство во время процесса функционального программирования (я работаю в фоновом режиме, так что, знаете, иногда это расстраивает ...)

val verticalWords = for(i <- verticalData) yield {



    //<---------- Here is where i need to know current iterations index.
    //If i had current index i could easily set get coordinates by indexes.
    //How do i get current index here?



    val currentWords = i.split(" ").filter(_.length > 0)
    val objWords = for(c <- currentWords) yield {
        Word(Orientation.VERTICAL, c.toString)
    }

    objWords //Array of words
}

- Большое спасибо !!

1 Ответ

0 голосов
/ 13 июня 2018

Скорее всего, вы хотите работать с zipWithIndex.Пример:

val text = "abc\ndef\nghi"
val lines = text.split("\n")
for ((line, rowIdx) <- lines.zipWithIndex) {
  for ((character, colIdx) <- line.zipWithIndex) {
    println(character + " at " + (rowIdx, colIdx))
  }
}

Вывод:

a at (0,0)
b at (0,1)
c at (0,2)
d at (1,0)
e at (1,1)
f at (1,2)
g at (2,0)
h at (2,1)
i at (2,2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...