На этом шаге мы приведем некоторые сведения о списках.
На 81 шаге мы уже затрагивали работу со списками, когда использовали функцию split() для извлечения трех элементов из описания напитка в меню. List содержит упорядоченную коллекцию значений и может содержать повторяющиеся значения.
Продолжим работу над нашей виртуальной таверной в Tavern.kt, добавив список посетителей с помощью функции listOf(). Эта функция возвращает список, доступный только для чтения (об этом далее), заполненный элементами, полученными из аргументов. Создайте список из трех посетителей.
import kotlin.math.roundToInt const val TAVERN_NAME = "Taernyl's Folly" var playerGold = 10 var playerSilver = 10 val patronList: List<String> = listOf("Eli", "Mordoc", "Sophie") fun main() { placeOrder("shandy,Dragon's Breath,5.91") println(patronList) // placeOrder("elixir,Shirley's Temple,4.12") } . . . .
Рис.1. Создание списка посетителей (Tavern.kt)
До этого момента вы создавали переменные разных типов, просто объявляя их. Но, чтобы получить коллекцию, нужно выполнить два шага:
Теперь, когда у вас есть список, рассмотрим тип List подробнее.
Хотя механизм автоматического определения типов распознает списки, мы включили информацию о типе:
val patronList: List<String> ,
Если вы попытаетесь записать целое число в patronList, компилятор этого не допустит. Попробуйте добавить число в объявленный список.
val patronList: List<String> = listOf("Eli", "Mordoc", "Sophie", 1)
IntelliJ предупредит, что целочисленное значение не соответствует ожидаемому типу String. Параметр типа необходимо использовать с List, потому что сам тип List является обобщенным типом. Это означает, что список может хранить данные любого типа, включая текстовые данные, такие как строки (как в случае с patronList) или символы, числовые значения, такие как целые и дробные числа, и даже данные новых типов, определяемых пользователем. (Об обобщенных типах поговорим позднее.)
Удалите последнее изменение с помощью команды отмены ввода (Command-z (Ctrl-z)) или удалив целое число.
На следующем шаге мы рассмотрим доступ к элементам списка.