package tiaojiankongzhi
//---------------IF表達式----------
/*
java的傳統用法
//可以作為表達式
/
/fun main(args: Array<String>) {
val max=if(10>5) 10 else 5
println(max)
val max2=if(10>5){
println("choose 10")
10
}else{
println("choose 5")
5
}
println(max2)
//因此也不需要像java一樣的三元操作符 可以簡單的if賦值判斷
}*/
//--------------使用區間-------------------
/*fun main(args: Array<String>) {
//使用in downTo step等來檢測否個數字是否在指定區間內
val x=5
val y=9
if(x in 1..8)
println("x 在區間內")
}*/
//----------when表達式---------------------
/*
when 將它的參數和所有的分支條件順序比較,直到某個分支滿足條件
when 既可以被當做表達式使用也可以被當做語句使用。
如果他被當做表達式,符合條件的分支的值就是整個表達式的值
如果當做語句使用,則忽略個別分支的值
when 類似其他語言的switch操作符
*/
fun main(args: Array<String>) {
val x:Int=1
when(x){
1-> print("x===1")
2-> print("x===2")
else ->{
//這里即default 既不是1也不是2
println("x既不是1也不是2")
}
}
//也可以將多個分支的條件放在一起 用逗號分隔
when(x){
1,2->println("x===1||x===2")
else->{
print("x既不是1也不是2")
}
}
//可以檢測一個值在in或者不在!in某個區間來判斷
when(x){//只會判斷一個條件
in 1..10->println("在")
!in 11..20->println("不在")
else->{
println("none")
}
}
//檢測一個值是is或者不是!is 一個特定類型的值
//由于智能轉換,你可以訪問該類型的方法和屬性而無需任何額外的檢測
fun hasPrefix(x:Any)=when(x){
is String->x.startsWith("prefix")
else -> false
}
println(hasPrefix("prefixaaaa"))
//when也可以來取代if-else 鏈
when{
x==1->print("x is odd")
x==3->print("x is even")
else -> print("x is funny")
}
//when中使用in來判斷集合中是否包含某實例
val items=setOf("apple","banana","kiwi")
when{
"orange" in items->println("juicy")
"apple" in items->println("apple is fine too")
}
}