Шаг 108.
Основы Kotlin.
Списки и множества. Списки

    На этом шаге мы приведем некоторые сведения о списках.

    На 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)

    До этого момента вы создавали переменные разных типов, просто объявляя их. Но, чтобы получить коллекцию, нужно выполнить два шага:

Kotlin предоставляет функции, такие как listOf(), которые могут делать это одновременно.

    Теперь, когда у вас есть список, рассмотрим тип List подробнее.

    Хотя механизм автоматического определения типов распознает списки, мы включили информацию о типе:

 val patronList: List<String>    ,
чтобы сделать его видимым для обсуждения. Обратите внимание на угловые скобки в List<String>. Конструкция <String> - это параметр типа, и он сообщает компилятору тип значений, которые будут содержаться в списке, - в нашем случае это String. Изменение параметра типа изменяет тип значений, которые компилятор разрешит хранить в списке.

    Если вы попытаетесь записать целое число в patronList, компилятор этого не допустит. Попробуйте добавить число в объявленный список.

val patronList: List<String> = listOf("Eli", "Mordoc", "Sophie", 1)

    IntelliJ предупредит, что целочисленное значение не соответствует ожидаемому типу String. Параметр типа необходимо использовать с List, потому что сам тип List является обобщенным типом. Это означает, что список может хранить данные любого типа, включая текстовые данные, такие как строки (как в случае с patronList) или символы, числовые значения, такие как целые и дробные числа, и даже данные новых типов, определяемых пользователем. (Об обобщенных типах поговорим позднее.)

    Удалите последнее изменение с помощью команды отмены ввода (Command-z (Ctrl-z)) или удалив целое число.

    На следующем шаге мы рассмотрим доступ к элементам списка.




Предыдущий шаг Содержание Следующий шаг