Ger*_*csy 9 arrays kotlin mutablemap
我想添加/设置具有特定键值对的可变映射的元素.到目前为止,我发现我可以使用plus运算符和Pair数据类型添加新元素:
var arr3:Map<Any, Any> = mutableMapOf()
arr3 += Pair("manufacturer", "Weyland-Yutani")
//also, the "to" operator works too:
//arr3 += ("manufacturer" to "Weyland-Yutani")
Run Code Online (Sandbox Code Playgroud)
但是,我无法找到如何修改或添加新的键值对:
arr3["manufacturer"] = "Seegson" // gives an error( Kotlin: No set method providing array access)
arr3["manufacturer"] to "Seegson" // compiles, but nothing is added to the array
Run Code Online (Sandbox Code Playgroud)
你能详细说明怎么做吗?
mie*_*sol 17
你已经arr3使用显式类型声明了mutable Map<Any, Any>.本Map)接口允许任何突变.在+=操作创建地图的一个新实例,并发生变异的变量arr3.要修改地图的内容,申报arr3的MutableMap,像这样:
var arr3:MutableMap<Any, Any> = mutableMapOf()
Run Code Online (Sandbox Code Playgroud)
或更多惯用语
var arr = mutableMapOf<Any, Any>()
Run Code Online (Sandbox Code Playgroud)
请注意,通常您需要可变变量var或可变实例类型,MutableMap但根据我的经验很少.
换句话说,您可以使用具有不可变类型的可变变量:
var arr = mapOf<Any,Any>()
Run Code Online (Sandbox Code Playgroud)
并使用+=运营商修改哪里 arr点.
或者您可以使用MutableMap不可变arr变量并修改where arr指向的内容:
val arr = mutableMapOf<Any,Any>()
Run Code Online (Sandbox Code Playgroud)
显然你只能修改MutableMap内容.因此,arr["manufacturer"] = "Seegson"只能使用声明为此的变量.
关于添加/设置操作,这些操作可以在MutableMap<K, V>(而不仅仅是Map<K, V>)上执行,并且可以通过以下几种方式完成:
Java样式的put调用:
arr3.put("manufacturer", "Seegson")
Run Code Online (Sandbox Code Playgroud)
该调用返回先前与键或关联的值null。
使用set操作员的更常见的Kotlin呼叫:
arr["matufacturer"] = "Seegson"
Run Code Online (Sandbox Code Playgroud)该plusAssign运营商的语法:
arr += "manufacturer" to "Seegson"
Run Code Online (Sandbox Code Playgroud)
此选项介绍的开销,Pair调用之前创建的,是不易阅读,因为它可以用混淆var的重新分配(也,故不适用var,因为不确定性的多个),但仍当你已经有了一个非常有用Pair,你要添加。
| 归档时间: |
|
| 查看次数: |
7648 次 |
| 最近记录: |