开始与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")
我缺少什么速记操作员魔法/演员?
提前致谢。
答案 0 :(得分:7)
这里的歧义是因为Kotlin可以将表达式cs += Pair(3, "c")
解释为从原始地图和给定对创建新地图并将该地图分配回变量cs = cs.plus(Pair(3, "c"))
的操作,或者作为操作变异原始地图cs.plusAssign(Pair(3, "c"))
要消除这种情况的歧义,请遵循Kotlin的座右铭 - 制作val
,而不是var
!
当您将cs
声明为val(非可变变量)时,一旦初始化它就无法重新分配,因此这里唯一可用的操作是plusAssign
。