gpt4 book ai didi

kotlin - 在 Kotlin 中增加一个整数 Map 值

转载 作者:行者123 更新时间:2023-12-04 13:31:25 28 4
gpt4 key购买 nike

给定一个 Map 或 MutableMap:

val scores: MutableMap<String, Int> = mutableMapOf(
"some person" to 0,
"some other person" to 0,
"you" to 0,
"me" to 0
)
我无法像在 Python 中那样增加这些,而且我不确定这样做的正确方法是什么,或者是否可能。
fun test() {
scores["you"] += 2
}
这给出了错误:
Operator call corresponds to a dot-qualified call 'scores["you"].plusAssign(2)' which is not allowed on a nullable receiver 'scores["you"]'.
我不确定这里发生了什么。

最佳答案

+=运算符是 plusAssign 的简写运算符函数 ( doc ),用于向可变映射或集合添加或替换条目,如 Kotlin doc 所指定用于 map 操作

You can also add new entries to maps using the shorthand operatorform. There are two ways:

  • plusAssign (+=) operator.
  • the [] operator alias for set().

当您使用 scores["you"] += 2 , 自 +=plusAssign 的简写运算符, 和 scores["you"]可以返回一个可以为空的值(就像 map 上的任何 get 操作一样),你会得到编译错误
Operator call corresponds to a dot-qualified call 'scores["you"].plusAssign(2)' which is not allowed on a nullable receiver 'scores["you"]'.
对于您的用例,您可以更好地使用 merge map 上的方法( doc )如下
scores.merge("you", 2, Int::plus)
请注意 merge即使 map 中不存在键,也会向 map 添加一个条目。如果您只想增加 map 中存在的键的值,您可以使用 computeIfPresent方法( doc )如下
scores.computeIfPresent("you"){ _, v -> v + 2 }

关于kotlin - 在 Kotlin 中增加一个整数 Map 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64868186/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com