Шаг 267.
Основы Kotlin.
Знакомство с сопрограммами. Задача для самостоятельного решения
На этом шаге мы рассмотрим одну задачу и прокомментируем ее решение.
Задание: минимальная сила
Персонаж с силой меньше 10 не сможет выжить в NyetHack. В этом задании отвергайте все ответы веб-службы, в которых значение str героя будет меньше 10. Повторяйте
запросы, пока не получите ответ со значением str 10 или выше.
Раскрыть/скрыть решение и комментарии.
В связи с тем, что указанная служба не работает, изменим условие задачи: будем работать с числами, которые не меньше 50.
С учетом сказанного, изменим содержимое функции fetchCharacterDataAsync() следующим образом: будем обращаться с запросом к веб-службе, проверять полученное число, и если
оно меньше 50, повторять запрос.
Текст функции может быть таким:
fun fetchCharacterDataAsync(): Deferred<CharacterGenerator.CharacterData> {
return GlobalScope.async {
var tmpData = URL(CHARACTER_DATA_API + (1..99).random()).readText().split(" ")
while (tmpData[0].toInt() < 50) {
tmpData = URL(CHARACTER_DATA_API + (1..99).random()).readText().split(" ")
}
val tmpName = tmpData[2] + " " + tmpData[3]
val apiData = "${tmpData[4]},${tmpData},${tmpData[0]},${tmpData[2].length},
${tmpData[3].length}"
CharacterGenerator.fromApiData(apiData)
}
}
Рис.1. Функция fetchCharacterDataAsync() (CharacterGenerator.kt)
На следующем шаге мы подведем итог изученному материалу.
Предыдущий шаг
Содержание
Следующий шаг