使用运算符的Kotlin Map

use*_*708 4 sortedmap kotlin

开始与Kotlin一起玩周末并试图让地图与运营商合作.不知怎的,Kotlin告诉我,我对它的含糊不清感到困惑.

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

var columns = sortedMapOf("a" to 1, "b" to 2)
columns.plusAssign("c" to 3)
Run Code Online (Sandbox Code Playgroud)

这里的代码根本不编译(但语法上更接近我想要的)

var cs = sortedMapOf(1 to "a", 2 to "b")
cs += Pair(3, "c")
Run Code Online (Sandbox Code Playgroud)

我错过了什么速记操作员魔术/铸造?

提前致谢.

Ily*_*lya 7

这里多义性是因为科特林可以解释表达cs += Pair(3, "c")或者作为操作产生从原始图和定的一对新的地图和分配该地图回变量cs = cs.plus(Pair(3, "c")),或作为操作突变原地图cs.plusAssign(Pair(3, "c"))

要消除这种情况的歧义,请遵循Kotlin的座右铭 - 制作val,而不是var!

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