dictionary - 由于 `HashMap.getOrDefault()` 函数中的接收器类型不匹配,以下候选均不适用
问题描述
根据Oracle官方文档,该HashMap.getOrDefault(Object Key, V defaultValue)
函数可以带两个参数,但是当我运行以下程序时编译器报错。
fun main(args: Array<String>) {
val numbersMap = mapOf(
"one" to 1,
"two" to 2,
"three" to 3,
"four" to 4,
"five" to 5
)
println(numbersMap.get("one"))
println(numbersMap["one"])
println(numbersMap.getOrDefault("four", 10))
println(numbersMap["five"])
}
C:\Users\forestfh\Documents\KotlinProjects>kotlinc GetOrDefault.kt
GetOrDefault.kt:11:24: error: unresolved reference. None of the following candid
ates is applicable because of receiver type mismatch:
public inline fun <R, T : String> Result<String>.getOrDefault(defaultValue: Stri
ng): String defined in kotlin
println(numbersMap.getOrDefault("four", 10))
解决方案
您可以使用getOrElse()
扩展函数来检索存储值或默认值:
println(numbersMap.getOrElse("four") { 10 })
推荐阅读
- c# - C# String.Format 输入字符串格式不正确
- javascript - JavaScript 在模板字符串中返回超过 21 年的布尔值
- r - 如何在 r 中导入 csv 数据后删除空行
- php - 如何每次都使用单独的数据库
- android - 将 ImageProxy 转换为位图
- typescript - (functionName) 不是子类中的函数
- android-intent - 如何在回退意图中添加参数
- flutter - 使用 Flutter 的 List Item UI 设计
- mysql - 带有 MyRocks 引擎的 MariaDB:插入后的许多大文件
- sonarqube - 无法使用詹金斯执行声纳扫描仪