在 Kotlin 中有个 is 运算符,用了检测一个表达式是否是某个类型的实例
判断之后,类型会根据情况自动发生转换
fun getStringLength(x: Any): Int? {
if(x is String){
//这里的 x 已经是 String 类型了
return x.length
}
//这里的 x 还是 Any 类型
return null
}
如果是反向判断也可以发生变化
fun getStringLength2(x: Any): Int? {
if(x !is String){
//这里的 x 是 Any 类型
return null
}
//这里的 x 已经是 String 类型了
return x.length
}
甚至在 && 运算符的右侧进行类型转换
fun getStringLength3(x: Any): Int? {
// 在 && 运算符的右侧, x 的类型会被自动转换为 String
if(x is String && x.length > 0){
return x.length
}
return null
}
调用代码方法
println(getStringLength("shun"))
println(getStringLength(98))
println(getStringLength2("shun"))
println(getStringLength2(66))
println(getStringLength3("shun"))
println(getStringLength3(77))
运行结果
4
null
4
null
4
null