Определить сеттер для карт в Kotlin - PullRequest
0 голосов
/ 11 июля 2020

Предположим, у меня есть это свойство в классе:

private var dates: Map<String, Long?> = mapOf(
    "creation" to System.currentTimeMillis(),
    "lastUpdate" to System.currentTimeMillis()
)

Теперь мне нужно обновить временную метку lastUpdate с помощью функции ниже:

fun start(): Boolean {
    this.dates["lastUpdate"] = System.currentTimeMillis()
    return true
}

Я получаю эту ошибку:

«Нет метода set, обеспечивающего доступ к массиву»

Как мне определить методы установки и получения для карт?

1 Ответ

5 голосов
/ 11 июля 2020

Kotlin s Карта неизменяема, т.е. вы не можете ни редактировать в ней значения, ни добавлять какие-либо новые.

В Kotlin есть отдельный интерфейс, который дает вам operator fun get() и operator fun set() в нем, на самом деле это MutableMap , расширение Map.

Вы можете создать MutableMap, используя mutableMapOf в стандартной библиотеке.

private var dates: MutableMap<String, Long?> = mutableMapOf(
    "creation" to System.currentTimeMillis(),
    "lastUpdate" to System.currentTimeMillis()
)

// Then change whatever you want to
dates["lastUpdate"] = System.currentTimeMillis()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...