Android-Kotlin-when&類型推斷


Kotlin的when表達式

TextEngine 描述文字處理對象:

package cn.kotlin.kotlin_base02

/**
 * 描述文字處理對象
 *
 * val textContent 傳入進來的文字內容 val是常量
 */
class TextEngine(val textContent: String) {

    /**
     * 處理文字,然后返回
     * 返回完整的字符串
     */
    fun getDoTextAction() : String {
        return """
               我來到一個非常美麗的公園,走着走着,就看到了${textContent}這個牌坊,這個牌坊中的${getTextContentCount(textContent)}個字是用漂亮的筆畫寫的
               """
    }

    /**
     * 把存入進來的textContent,轉換成幾個字
     * 返回字符串
     */
    private fun getTextContentCount(textContent: String): String {
        var result = when(textContent.length) {
            1 -> "一"
            2 -> "二"
            3 -> "三"
            4 -> "四"
            5 -> "五"
            6 -> "六"
            else -> {
                "" + textContent.length
            }
        }
        return result
    }

}

 

main測試方法:

package cn.kotlin.kotlin_base02

fun main(args: Array<String>) {

    var textEngine = TextEngine("皇后工天下")
    println(textEngine.getDoTextAction())

    var textEngine2 = TextEngine("風雲帝王")
    println(textEngine2.getDoTextAction())

    var textEngine3 = TextEngine("阿巴黎大會公園")
    println(textEngine3.getDoTextAction())

    println("------------------------------------------------------")

    // -------------- when 的第一種用法
    when(130.88) {
        143.98 -> println("體重比較合格...")
        130.88 -> println("體重中規中矩....")
        100.32 -> println("體重輕了,太瘦了...")
        else -> println("體重數據未知...")
    }

    println("------------------------------------------------------")

    // -------------- when 的第二種用法
    when(3) {
        1 -> {
            println("我有三個人在給我干活....")
        }
        2 -> {
            println("我看到2個人在看電影...")
        }
        3 -> {
            println("三人行必有我吸煙....")
        }
        else -> println("沒有人給我干活...")
    }

    println("------------------------------------------------------")

    // -------------- when 的第三種用法
    var perosnCount = 30
    var whenResult = when(perosnCount) {
        10 -> "這個工作室${perosnCount}個人"
        20 -> "這個工作室${perosnCount}個人"
        30 -> "這個工作室${perosnCount}個人"
        40 -> "這個工作室${perosnCount}個人"
        else -> "這個工作室 N個人在努力工作...."
    }
    println(whenResult)

    // when還有其他用法,暫未發現
    // ....
}

執行結果:

 

 




 

 

類型推斷

類型推斷是Kotlin內部自動處理的:

 

類型推斷(注意:類型推斷 變量和常量是一樣的,只要是第一次賦值,就內部就認為第一次的類型變量類型)

定義一個常量/變量,賦值為字符串類型,Kotlin內部就已經認為此常量/變量是字符串類型了

 

package cn.kotlin.kotlin_base02

/**
 * 類型推斷(注意:類型推斷 變量和常量是一樣的,只要是第一次賦值,就內部就認為第一此的類型變量類型)
 */
fun main(args: Array<String>) {

    /**
     * 定義一個常量,賦值為字符串類型,Kotlin內部就已經認為此aVal常量是字符串類型了
     */
    val aVal = "AAAAAAA"

    /**
     * 定義一個變量,賦值為字符串類型,Kotlin內部就已經認為此aVar變量是字符串類型了
     */
    var aVar = "ABCDEFT"

    // 在給aVar賦值為99,會報錯,因為aVar已經是字符串類型了
    // aVar = 99


    /**
     * 定義一個變量,賦值為整形類型,Kotlin內部就已經認為此bVar變量是整形類型了
     */
    var bVar = 1000

    // 在給bVar賦值為ABCD,會報錯,因為bVar已經是整形類型了
    // bVar = "ABCD"


    /**
     * 定義一個變量,賦值為浮點型類型,Kotlin內部就已經認為此cVar變量是浮點型類型了
     */
    var cVar = 988.22

    // 在給cVar賦值為100,會報錯,因為cVar已經是浮點型類型了
    // cVar = 100


    // -----------------------
    /**
     * 以上沒有指定變量類型,內部通過第一次賦值來決定類型的
     * 而以下代碼是,指定變量類型
     */
    var zVar : String = "ABCDEF"
    var z2Var : Int = 10000
    var z3Var : Double = 564.45
    var z4Var : Float = 1000.37f
    // ...... 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM