使用运算符的 Kotlin 映射

Kotlin Map using Operators

周末开始玩 Kotlin,并尝试让地图与运算符一起工作。 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")

我缺少什么 shorthand 运算符 magic/casting?

提前致谢。

这里的歧义是因为 Kotlin 可以将表达式 cs += Pair(3, "c") 解释为从原始地图和给定对创建新地图并将该地图分配回变量 cs = cs.plus(Pair(3, "c")) 的操作,或者作为操作改变原始地图 cs.plusAssign(Pair(3, "c"))

为了消除这种情况的歧义,请遵循 Kotlin 的座右铭——make val,而不是 var!

当您将 cs 声明为 val(非可变变量)时,它一旦被初始化就无法重新分配,因此这里唯一可用的操作是 plusAssign.