如何把元素放到地图上并返回地图

考虑这个函数,我们试图向toMap(): MutableMap结果添加一个元素toMap(): MutableMap

 fun add(key: String, value: Any): MutableMap { val map = asMap() map.put(key, value) return map } 

这很简单,但我想知道是否可以简化为“单线”? 就像是:

 fun add(key: String, value: Any): MutableMap = asMap().magicPut(key, value) 

编辑:显然我不够清楚: asMap()是一个用户定义的函数返回一个MutableMap与一些条目。 add方法应该添加到这个已经存在的地图。

EDIT2:基于评论我重命名为toMap() asMap()

你可以简化你的function

 fun add(key: String, value: Any) = toMap().apply { put(key, value) } 

你可以使用这个辅助函数:

 mutableMapOf(key to value) 

它是Kotlin标准库(链接)的一部分 。

从评论更新说明:

MutableMap上创建扩展函数

 fun MutableMap.add(key: String, value:Any) = apply { put(key to value) } 

然后在你现有的map.add("key", "value")上调用它。 这样你可以链接你的添加电话。

这是你的代码。

 fun add(key: String, value: Any): MutableMap { val map = toMap() map.put(key, value) return map } 

函数add()的主体可以转换为单个expression式。 所以,修改后的代码将是:

 fun add(key: String, value: Any): MutableMap { return toMap().apply { put(key, value) } } 

当函数返回单个expression式时,可以省略大括号,并且在a =符号之后指定正文。 所以,修改后的代码将是:

 fun add(key: String, value: Any) = toMap().apply { put(key, value) }