【问题标题】:None of the following candidate is applicable because of receiver type mismatch in `HashMap.getOrDefault()` function由于 `HashMap.getOrDefault()` 函数中的接收器类型不匹配,以下候选均不适用
【发布时间】:2020-10-18 15:35:07
【问题描述】:

根据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))

【问题讨论】:

    标签: dictionary kotlin hashmap


    【解决方案1】:

    您可以使用getOrElse() 扩展函数来检索存储值或默认值:

    println(numbersMap.getOrElse("four") { 10 })
    

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 2019-04-19
      • 2022-06-12
      • 2021-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多