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

作者: 厚土火焱 | 来源:发表于2017-10-30 18:35 被阅读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
    

    相关文章

      网友评论

        本文标题:05. 类型检测及类型自动转换

        本文链接:https://www.haomeiwen.com/subject/aakmpxtx.html