从终端传递参数时Kotlin类型不匹配错误

时间:2017-07-24 03:07:05

标签: kotlin

当我试图学习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;?

1 个答案:

答案 0 :(得分:0)

这是因为还有另外maxOf来获取Comparable的最大值,String 是-A Comparable

fun <T : Comparable<T>> maxOf(a: T, b: T): T