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 // ...... }