淺談Kotlin(一):簡介及Android Studio中配置 淺談Kotlin(二):基本類型、基本語法、代碼風格 淺談Kotlin(三):類 淺談Kotlin(四):控制流 本篇介紹Kotlin的控制流語法(if,for,while,when....) 一、if 語句 1、基本用法: 2、判斷 ...
淺談Kotlin(一):簡介及Android Studio中配置
本篇介紹Kotlin的控制流語法(if,for,while,when....)
一、if 語句
1、基本用法:
var a = 10; if(a > 5){ Log.i("xqxinfo","a>5成立") }else{ Log.i("xqxinfo","a>5不成立") }
列印日誌:xqxinfo: a>5成立
2、判斷結果賦值
var a = 5; var b = 10; var max = if(a>b) a else b Log.i("xqxinfo","最大值max:"+max)
列印日誌:xqxinfo: 最大值max:10
註意:可以將結果體放在{}中
var a = 5;
var b = 10;
var max = if(a>b) {a} else {b}
二、for迴圈
雖然你在使用了collections的函數操作符之後不會再過多地使用for迴圈,但是for循 環再一些情況下仍然是很有用的。
提供一個迭代器它可以作用在任何東西上面:
for (item in collection) { print(item) }
如果你需要更多使用index的典型的迭代,我們也可以使用 ranges (反正它通常 是更加智能的解決方案):
for (index in 0..viewGroup.getChildCount() - 1) { val view = viewGroup.getChildAt(index) view.visibility = View.VISIBLE }
在我們迭代一個array或者list,一系列的index可以用來獲取到指定的對象,所以上 面的方式不是必要的:
for (i in array.indices) print(array[i])
三、while迴圈
1、while
var a = 10;
while (a<15){
a++;
Log.i("xqxinfo", "變數a的數值增加1,當前變數a="+a)
}
列印結果:
I/xqxinfo: 變數a的數值增加1,當前變數a=11
I/xqxinfo: 變數a的數值增加1,當前變數a=12
I/xqxinfo: 變數a的數值增加1,當前變數a=13
I/xqxinfo: 變數a的數值增加1,當前變數a=14
I/xqxinfo: 變數a的數值增加1,當前變數a=15
2、do-while
var a = 10; do { a++; Log.i("xqxinfo", "a自增一,當前值:" + a) }while (a<15)
列印結果:
I/xqxinfo: a自增一,當前值:11
I/xqxinfo: a自增一,當前值:12
I/xqxinfo: a自增一,當前值:13
I/xqxinfo: a自增一,當前值:14
I/xqxinfo: a自增一,當前值:15
四、when (效果類似於switch)
1、基本使用
when 表達式與Java中的 switch/case 類似,但是要強大得多。
這個表達式會去 試圖匹配所有可能的分支直到找到滿意的一項。
然後它會運行右邊的表達式。
與 Java的 switch/case 不同之處是參數可以是任何類型,並且分支也可以是一個條 件。
對於預設的選項,我們可以增加一個 else 分支,它會在前面沒有任何條件匹配時 再執行。
var a = 10;
when(a){
10 -> { //滿足a=10的情況
Log.i("xqxinfo","執行a=10的情況")
a = 11
}
11-> {
Log.i("xqxinfo","執行a=11的情況")
a = 12
}
else -> Log.i("xqxinfo","執行a!=10&&a!=11的情況")
}
列印結果:
I/xqxinfo: 執行a=10的情況
註意:{}括起來滿足這個條件的語句,一行寫一個代碼,不要寫在一行里
2、條件可以是一系列被逗號分割的值。
var a = 10; when(a){ 10,11 -> { Log.i("xqxinfo", "a滿足10||11"); } else -> Log.i("xqxinfo","執行else") }
列印結果:
I/xqxinfo: a滿足10||11
3、可以檢測類型
when(view) { is TextView -> view.setText("I'm a TextView") is EditText -> toast("EditText value: ${view.getText()}") is ViewGroup -> toast("Number of children: ${view.getChildCount()} " else -> view.visibility = View.GONE }