Kotlin开发指南Kotlin禅与计算机程序设计艺术

05. 类型检测及类型自动转换

2017-10-30  本文已影响104人  厚土火焱

在 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
上一篇下一篇

猜你喜欢

热点阅读