我刚刚用Kotlin编写了一些代码,并遇到了一些问题,这里是测试代码:
fun testString(s: Any)
{
when(s)
{
Int -> println("Int parameter!")
String -> println("String parameter!")
//Boolean -> println("Not boolean thing!") //Why Boolean cannot use in when?
else -> println("Other object!")
}
}
var ss = "This is actual a Kotlin String!"
println(ss.javaClass.simpleName) //out: String
testString(ss)//out: Other object! Why not String???
问题在于,当只打印变量时,它会显示预期的输出:String (Kotlin)
,但在testString
函数中,输出的变量始终为java.lang.String
,也就是为什么?
然后另一个令我不安的是:布尔不能在when
中使用?为什么?提前谢谢!
答案 0 :(得分:4)
在when语句中,您需要检查参数是否为Int / String / Boolean类型。所以返回值需要是一个布尔值。
因此,您需要使用String
代替is String
:
fun testString(s: Any)
{
when(s)
{
is Int -> println("Int parameter!")
is String -> println("String parameter!")
is Boolean -> println("boolean thing!")
else -> println("Other object!")
}
}
然后它也适用于布尔值。
答案 1 :(得分:2)
您忘记了is
这有效:
fun testString(s: Any)
{
when(s)
{
is Int -> println("Int parameter!")
is String -> println("String parameter!")
is Boolean -> println("Boolean parameter!")
else -> println("Other object!")
}
}