IF 表達式
在 Kotlin 中,if是一個表達式,即它會傳回一個值。 是以就不需要三元運算符(條件 ? 然後 : 否則),因為普通的 if 就能勝任這個角色。
var a:Int=
var b:Int=
//Kotlin使用if語句代替三元運算符
var max=if(a>b) a else b
//三元運算符
var max=a>b?a:b
if的分支可以是代碼塊,最後的表達式作為該塊的值:
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
使用 in 運算符來檢測某個數字是否在指定區間内,區間格式為 x..y :
fun main(args: Array<String>) {
val x =
val y =
if (x in ) {
println("x 在區間内")
}
}
注意他和for循環的差別
When 表達式
when 取代了類 C 語言的 switch 操作符。其最簡單的形式如下:
when (x) {
-> println("x=1")
-> println("x=2")
else -> {
println("default x")
}
}
when 将它的參數和所有的分支條件順序比較,直到某個分支滿足條件。 when 既可以被當做表達式使用也可以被當做語句使用。如果它被當做表達式, 符合條件的分支的值就是整個表達式的值,如果當做語句使用, 則忽略個别分支的值。(像 if 一樣,每一個分支可以是一個代碼塊,它的值是塊中最後的表達式的值。)
如果其他分支都不滿足條件将會求值 else 分支。 如果 when 作為一個表達式使用,則必須有 else 分支, 除非編譯器能夠檢測出所有的可能情況都已經覆寫了。
如果很多分支需要用相同的方式處理,則可以把多個分支條件放在一起,用逗号分隔:
when (x) {
, -> print("x == 0 or x == 1")
else -> print("otherwise")
}
我們可以用任意表達式(而不隻是常量)作為分支條件
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
我們也可以檢測一個值在(in)或者不在(!in)一個區間或者集合中:
when (x) {
in -> print("x is in the range")
in validNumbers -> print("x is valid")
!in -> print("x is outside the range")
else -> print("none of the above")
}
when 也可以用來取代 if-else if鍊。 如果不提供參數,所有的分支條件都是簡單的布爾表達式,而當一個分支的條件為真時則執行該分支:
when {
x.isOdd() -> print("x is odd")
x.isEven() -> print("x is even")
else -> print("x is funny")
}
For 循環
for 循環可以對任何提供疊代器(iterator)的對象進行周遊,文法如下:
for (item in collection) print(item)
如上所述,for 可以循環周遊任何提供了疊代器的對象。
如果你想要通過索引周遊一個數組或者一個 list,你可以這麼做:
for (i in array.indices) {
print(array[i])
}
while 與 do…while 循環
while是最基本的循環,它的結構為:
while( 布爾表達式 ) {
//循環内容
}
do…while 循環 對于 while 語句而言,如果不滿足條件,則不能進入循環。但有時候我們需要即使不滿足條件,也至少執行一次。
do…while 循環和 while 循環相似,不同的是,do…while 循環至少會執行一次。
do {
//代碼語句
}while(布爾表達式);
傳回和跳轉
Kotlin 有三種結構化跳轉表達式:
- return。預設從最直接包圍它的函數或者匿名函數傳回。
- break。終止最直接包圍它的循環。
- continue。繼續下一次最直接包圍它的循環。
fun main(args: Array<String>) {
for (i in ) {
if (i==) continue // i 為 3 時跳過目前循環,繼續下一次循環
println(i)
if (i>) break // i 為 6 時 跳出循環
}
}