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測試方法:spa

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還有其餘用法,暫未發現
    // ....
}

執行結果:code

 

 




 

 

類型推斷

類型推斷是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
    // ...... 
}
相關文章
相關標籤/搜索