Ely*_*lye 2 collections kotlin
在文档中,我看到我们有setValue
一个 mutableMap。
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/set-value.html
operator fun <V> MutableMap<in String, in V>.setValue(
thisRef: Any?,
property: KProperty<*>,
value: V)
Run Code Online (Sandbox Code Playgroud)
然而当尝试使用它时,它似乎不存在。(我使用的是 Kotlin 1.3)
val a = mutableMapOf(1 to 1, 2 to 3)
a.setValue(...) // error out
Run Code Online (Sandbox Code Playgroud)
是不是已经不可用了?
这是一个扩展,它实现了setValue
类型所需的方法,以便将其用作属性委托。官方文档介绍了如何将地图用作委托:在地图中存储属性。
TLDR,您可以使用这种语法,将属性委托给 Map 实例:
class User(val map: Map<String, Any?>) {
val name: String by map
val age: Int by map
}
Run Code Online (Sandbox Code Playgroud)
如果您想简单地设置 a 的值MutableMap
,请使用该set
方法,也可用作运算[]
符:
val map = mutableMapOf(1 to 1, 2 to 3)
map.set(2, 2)
map[2] = 2
Run Code Online (Sandbox Code Playgroud)
或者该put
方法,它还返回您修改的键存储的先前值:
val oldValue: Int = map.put(2, 5)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2255 次 |
最近记录: |