kotlin - mutableMap.setValue(...) 函数不再存在?
问题描述
在文档中,我看到我们有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)
但是,当尝试使用它时,它似乎不存在。(我使用的是 Kotlin 1.3)
val a = mutableMapOf(1 to 1, 2 to 3)
a.setValue(...) // error out
它不再可用了吗?
解决方案
这是一个扩展,它实现setValue
了类型所需的方法,以便将其用作属性委托。官方文档在这里介绍了如何将 Maps 用作代表:Storing Properties in a Map。
TLDR,您可以使用这种语法,将属性委托给 Map 实例:
class User(val map: Map<String, Any?>) {
val name: String by map
val age: Int by map
}
如果您想简单地设置 a 的值MutableMap
,请使用该set
方法,该方法也可用作[]
运算符:
val map = mutableMapOf(1 to 1, 2 to 3)
map.set(2, 2)
map[2] = 2
或者put
方法,它还返回由您修改的键存储的先前值:
val oldValue: Int = map.put(2, 5)
推荐阅读
- twig - HTML 代码在 OpenCart 运输方法标签中不起作用
- java - 尝试使用 @Value 从属性文件设置 @Scheduled 的 cron 属性,但出现编译时错误
- flutter - 如何在颤动的字符串中使用特殊的unicode字符?
- c++ - 在 Windows 中创建 OpenGL 上下文
- symfony - 在不同的频道中发送 symfony ChatMessage
- javascript - 在单箭头(自动返回)功能中添加控制台日志而不添加花括号
- ios - 如何删除一组 GMSMarker?
- powershell - 使用 $PSScriptRoot 从另一个脚本执行 powershell 脚本?
- c++ - 朋友模板专业化
- javascript - 节点 mongodb 将数据存储为字符串而不是对象