使用运算符的 Kotlin Map

标签 kotlin sortedmap

周末开始使用 Kotlin 并尝试让 map 与运营商合作。不知何故,Kotlin 告诉我我把它与歧义混淆了。

这是有效的代码(语法上不像我想要的那样):

var columns = sortedMapOf("a" to 1, "b" to 2)
columns.plusAssign("c" to 3)

这是根本无法编译的代码(但在语法上更接近我想要的)
var cs = sortedMapOf(1 to "a", 2 to "b")
cs += Pair(3, "c")

我缺少什么速记运算符魔术/类型转换?

提前致谢。

最佳答案

这里的歧义是因为 Kotlin 可以解释表达式 cs += Pair(3, "c")作为从原始映射和给定对创建新映射并将该映射分配回变量 cs = cs.plus(Pair(3, "c")) 的操作,或作为改变原始 map 的操作 cs.plusAssign(Pair(3, "c"))
要消除这种情况的歧义,请遵循 Kotlin 的座右铭 — make val ,不是 var !

当您申报时 cs作为 val(非可变变量),一旦初始化就不能重新赋值,所以这里唯一可用的操作是 plusAssign .

关于使用运算符的 Kotlin Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33460065/

相关文章:

generics - Kotlin:编译器无法为某些运算符推断出通用类型

android - 拦截调用以刷新 token GRPC

android - UTC时间在 Kotlin 不正确

java - 如何从 TreeMap 中获取第 n 项?

android - 按值的日期属性对 Hashmap 键进行排序

kotlin - 我是否需要在Kotlin中为val变量添加get()?

kotlin - 如何使用重试只有3次就放弃

java - ConcurrentSkipListMap 排序 : Can it be done by the value's compareTo?

scala - 如何形成 scala SortedMaps 的联合?

Java:SortedMap、TreeMap、Comparable?如何使用?