如何把元素放到地图上并返回地图
考虑这个函数,我们试图向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) }
- 用匕首使用Kotlin
- 如何在IntelliJ IDEA中禁用“将Java转换为Kotlin”?
- ListView可以出现在Activity中,但不能出现在Fragment中
- Spring Security多个成功的认证提供商
- Android:Kotlin TypeCastException:null不能转换为非nulltypes的kotlin.String
- 如何使用KClassreflection来区分Kotlin中的类和接口
- Kotlin库’classes.jar’具有不受支持的格式。 请更新库或插件
- Kotlin Dagger2找不到符号ApplicationModule_ProvideApplicationFactory
- 我如何从types名称获取类名?