Шаг 131.
Основы Kotlin.
Ассоциативные массивы. Задача для самостоятельного решения
На этом шаге мы рассмотрим некоторую задачу и ее возможное решение.
Задание: вышибала в таверне
Посетитель без золота не должен делать заказы. Более того, он не должен слоняться без дела по таверне, и вышибала должен сразу его заметить. Если у посетителя нет денег, выгоните его
на негостеприимную улицу NyetHack, удалив из uniquePatrons и массива patronGold.
Раскрыть/скрыть решение и комментарии.
Мы предлагаем решить эту проблему так: заведем множество, куда будем записывать всех неплетежеспособных посетителей, а затем вычтем его из требуемых массивов.
Текст функции checkingPatronBalances(), решающей указанную задачу, может быть таким:
. . . .
fun main() {
. . . .
displayPatronBalances()
checkingPatronBalances()
println("----------------")
displayPatronBalances()
}
private fun checkingPatronBalances()
{
// Множество удаляемых посетителей
val removePatron = mutableSetOf<String>()
patronGold.forEach { patron, balance ->
if (balance <= 0) {
// Если нет денег...
removePatron += patron // ...выгоняем
}
}
// Удаляем неплатежеспособных
patronGold -= removePatron
uniquePatrons -= removePatron
}
Файл с проектом можно взять
здесь.
Рис.1. Текст функции checkingPatronBalances(). В функции main() приведен ее вызов
Результат работы приложения приведен на рисунке 2:
Рис.2. Результат работы приложения
Под чертой из символов "-" в функции main() для проверки перечислены платежеспособные посетители таверны.
Со следующего шага мы начнем рассматривать объявление классов.
Предыдущий шаг
Содержание
Следующий шаг