当我试图学习kotlin的语法时,我发现了一个类型不匹配错误。 文件test1.kt如下:
fun main(args: Array<String>){
println(maxOf(args[0], args[1]))
println(maxOf2(args[0], args[1]))
}
fun maxOf(a: Int, b: Int): Int{
return if (a>b) a else b
}
fun maxOf2(a: Int, b: Int): Int = if (a>b) a else b
我在终端输入命令编译了程序。
kotlinc test1.kt -include-runtime -d test1.jar
错误消息显示:
test1.kt:3:18: error: type mismatch: inferred type is String but Int was expected
println(maxOf2(args[0], args[1]))
^
test1.kt:3:27: error: type mismatch: inferred type is String but Int was expected
println(maxOf2(args[0], args[1]))
^
可以通过替换
来解决问题println(maxOf2(args[0], args[1]))
带
println(maxOf2(args[0].toInt(), args[1].toInt()))
我的问题是为什么错误只发生在函数&#34; maxOf2&#34;?
答案 0 :(得分:0)
这是因为还有另外maxOf来获取Comparable
的最大值,String
是-A Comparable
。
fun <T : Comparable<T>> maxOf(a: T, b: T): T