Почему kotlin не позволяет использовать нулевой оператор индексации?
Причина, по которой вы не можете использовать map?.[K]
, заключается в том, что этот синтаксис не поддерживается. Это давний запрос. Вот 4-летняя проблема для него: https://youtrack.jetbrains.com/issue/KT-8799
Вместо этого используйте эквивалентный синтаксис метода, который равен map.get(T)
вместо map[T]
, то есть то, что у вас сначала:
fun fun2(map: Map<*, *>?) {
assert(map?.get("key") === map?.get("key"))
}
Вы можете найти в официальных документах , что .get()
- это то, что реализует оператор []
. Другими словами, компилятор переводит []
в .get()
за кулисами, так что в этом случае вы могли бы также вызвать его напрямую.