以下示例是我在应用程序中尝试做的简化版本。
代码无法编译。IntelliJ 给出以下提示:
为什么所需类型是而不是,它到底是什么?如果我的应用程序没有默认值怎么办?
fun main() {
val test: MutableMap<Int, String> = mutableMapOf(
1 to "Apple",
)
test[2] = test[1] // test[1] has incorrect type.
}
代码无法编译。IntelliJ 给出以下提示:
Type mismatch.
Required: TypeVariable(V)
Found: String?
我不理解TypeVariable是什么,但当我提供默认值时,错误消失了。
test[2] = test[1] ?: "Grape"
为什么所需类型是而不是,它到底是什么?如果我的应用程序没有默认值怎么办?
test[1] ?: "Grape"
起作用,但就是不理解错误信息,对吧?编译器试图为 这个set
方法 推断V
类型参数。请参考这个非常相似的问题 这里,关于错误地访问映射。 - Sweeper