Это мой сценарий, у меня есть несколько MutableList
членов, первый для хранения String
(называемый sl ), а остальные для Any
(называемые объекты , names , ...), и мне нужно получить доступ к значениям в объектах , names , а остальные 2 способами:
- sl через индекс,
- объекты , имена и остальное через строковое значение, сохраненное в sl ,
Может быть, пример более понятен:
var tmpListItem = myStringList.sl[0] // read only for the sl list
myStringList.objects["keyname"] = "keyvalue" // write and read for the rest
var tmpObj = myStringList.objects["keyname"]
myStringList.names["keyname"] = "keyvalue"
var tmpName = myStringList.names["keyname"]
Я пытался перегрузить оператор индексированного доступа для MutableList
, но я получаю эту ошибку:
Несоответствие типов: предполагаемый тип - String, но ожидался Int
Пока что это моя попытка:
data class StringList(val str: String) {
val sl = mutableListOf<String>()
val objects = mutableListOf<Any?>()
val names = mutableListOf<Any?>()
val values = mutableListOf<Any?>()
val strings = mutableListOf<Any?>()
public operator fun <E> MutableList<E>.set(k: String, value: Any?) {
val t = sl.indexOf(k)
objects[t] = value
}
operator fun <E> MutableList<E>.get(e: String): Any? {
val t = sl.indexOf(e)
return objects[t]
}
}
Не уверен, что другая реализация более подходящим для моего сценария, любое предложение приветствуется.