kotlin, как проверить, находится ли индекс в диапазоне - PullRequest
0 голосов
/ 24 февраля 2020

При наличии случая, когда карта передается с данными типа

Map<Pair<Int, Int>), String>

Pair<Int, Int>) // zero based star index, inclusive end index
to
displayString

при выполнении процесса, необходимо подобрать правильную displayString для текущей позиции, например

var index = 0
for (data in dataList) {
   /*
   if the current index is within one of the pair<int, int> 
   then use the mapped displayString
   */
   index++
}

что лучший способ сделать в kotlin?

1 Ответ

1 голос
/ 24 февраля 2020

Не уверен, что это то, что вы имели в виду, но, возможно, что-то вроде этого:

var index = 0
for (data in dataList) {
   /*
   if the current index is within one of the pair<int, int> 
   then use the mapped displayString
   */
   val currentPair = data.key
   if ((currentPair.first .. currentPair.second).contains(index)) {
       // do something
   }

   index++
}

Хотя, если вы имели в виду, вы хотели, чтобы геттер получил первую пару с карты, которая содержит int, возможно, вы хотел что-то вроде этого:

fun getByIndex(dataList: Map<Pair<Int,Int>, String>, index: Int): String? {
   return dataList.firstOrNull { 
       (it.key.first .. it.key.second).contains(index) 
   } 
}

Используйте until вместо .., чтобы иметь эксклюзивный конечный индекс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...