使用运算符的 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
.
周末开始玩 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
.