Dictionary 递增可变映射值会导致可为空的接收器错误
我是科特林的新手,试着用谷歌搜索,但我不明白 示例如下: 代码:Dictionary 递增可变映射值会导致可为空的接收器错误,dictionary,kotlin,nullable,mutable,Dictionary,Kotlin,Nullable,Mutable,我是科特林的新手,试着用谷歌搜索,但我不明白 示例如下: 代码: 有更干净的方法吗?您可以对任意字符使用索引运算符,即使这些字符不是映射的一部分,就像在不存在的键中一样。有两种明显的解决方案,要么抛出异常,要么返回null。正如您在文档中看到的,标准库在操作符fun get中返回null,索引操作符将其转换为: 另一种选择是getValue,描述如下: 返回给定[key]的值,如果映射中没有此类键,则引发异常 像这样使用:val v:Int=foo.getValue('A')啊,我现在明白了。
有更干净的方法吗?您可以对任意字符使用索引运算符,即使这些字符不是映射的一部分,就像在不存在的键中一样。有两种明显的解决方案,要么抛出异常,要么返回
null
。正如您在文档中看到的,标准库在操作符fun get
中返回null
,索引操作符将其转换为:
另一种选择是getValue
,描述如下:
返回给定[key]的值,如果映射中没有此类键,则引发异常
像这样使用:
val v:Int=foo.getValue('A')
啊,我现在明白了。谢谢
fun main(args: Array<String>) {
val foo = mutableMapOf('A' to 0, 'C' to 0, 'G' to 0, 'T' to 0)
foo['A'] = foo['A'] + 1
println("$foo['A']")
}
foo['A'] = foo['A']!!.plus(1)
/**
* Returns the value corresponding to the given [key], or `null` if such a key is not present in the map.
*/
public operator fun get(key: K): V?