考虑这个函数,我们尝试在toMap(): MutableMap<String, Any>
:
fun add(key: String, value: Any): MutableMap<String, Any> {
val map = asMap()
map.put(key, value)
return map
}
这很简单,但我想知道是否可以将其简化为“单行”?类似的东西:
fun add(key: String, value: Any): MutableMap<String, Any>
= asMap().magicPut(key, value)
编辑:显然我不够清楚:asMap()
是一个用户定义的函数,它返回一个带有一些条目的MutableMap。 add
方法应添加到此已存在的地图中。
EDIT2:根据评论,我将toMap()
重命名为asMap()
。
答案 0 :(得分:6)
您可以将功能简化为
fun add(key: String, value: Any) = toMap().apply { put(key, value) }
答案 1 :(得分:3)
您可以使用此辅助功能:
mutableMapOf(key to value)
它是Kotlin标准库(link)的一部分。
评论解释更新:
在MutableMap<String, Any>
fun MutableMap<String, Any>.add(key: String, value:Any) = apply { put(key to value) }
然后在现有地图map.add("key", "value")
上拨打此电话。通过这种方式,您可以链接添加调用。
答案 2 :(得分:0)
这是你的代码。
fun add(key: String, value: Any): MutableMap<String, Any> {
val map = toMap()
map.put(key, value)
return map
}
函数add()
的主体可以转换为单个表达式。
因此,修改后的代码将是:
fun add(key: String, value: Any): MutableMap<String, Any> {
return toMap().apply { put(key, value) }
}
当函数返回单个表达式时,可以省略花括号,并在=
符号后指定正文。因此,修改后的代码将是:
fun add(key: String, value: Any) = toMap().apply { put(key, value) }
答案 3 :(得分:0)
您不需要自己做。您可以简单地:asMap().plus(key to value)
。
文档here。