使用运算符的Kotlin Map

时间:2015-11-01 07:17:44

标签: kotlin sortedmap

开始与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")

我缺少什么速记操作员魔法/演员?

提前致谢。

1 个答案:

答案 0 :(得分:7)

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

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

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