/**
* 条件表达式 if
*
*/
fun ifTest() {
var a = 1
var b = 2
var max = a
//传统用法
if (a < b) max = b
//使用else
max = if (a > b) {
println("a is max")
a
} else {
println("b is max")
b
}
//java三元操作符,作为表达式
max = if (a > b) a else b
}
/**
* 条件表达式 when
*/
fun whenTest() {
var x = 12
when (x) {
1 -> println("x=1")
22, 23 -> print("22 or 23")//多个分支相同处理方式用,分隔
in 1..10 -> println("x is in the range")
!in 1..10 -> println("x is in the range")
else -> {//相当于switch的default
println("x is else")
}
}
val item = setOf("apple", "banana", "kiwi")
when {
"orange" in item -> println("juicy")
"apple" in item -> println("apple is fine too")
}
}
/**
*For循环
* for循环可以循环遍历任何提供了迭代器的对象
*/
fun forTest() {
val item = arrayOf("apple", "banana", "kiwi")
//遍历循环,迭代器
for (s in item) {
println(s)
}
//通过索引遍历数组
for (i in item.indices) {
println(item[i])
}
//通过库函数
for ((index, value) in item.withIndex()) {
println("index is $index,value is $value")
}
}
/**
* while do...while 循环
*/
fun whileTest() {
var y = 1
while (y > 0) {
//满足条件进入循环,如果不满足条件不进入循环
}
do {
//即使不满足条件,也至少执行一次
} while (y > 0)
}
/**
* return :默认从最直接包围它的函数或者匿名函数返回
* break :终止最直接包围它的函数
* continue:继续下次最直接包围它的循环
*/
fun backTest() {
loop@ for (j in 1..10) {
for (i in 1..10) {
if (i == 1) continue //i为2跳过当前循环,继续下一次循环
println(i)
if (i == 2) break //i为3 跳出循环
if (i == 3) continue@loop//继续标签指定的循环的下一次迭代
if (i == 4) break@loop//i为4跳转到标签指定的循环后面继续执行
}
}
val item = arrayOf("apple", "banana", "kiwi")
item.forEach lit@{
if (it == "banna") return//这个返回直接返回backTest函数
if (it == "kiwi") return@lit//这个返回返回到forEach(通常情况使用隐式标签 @forEach,标签与函数同名)
print(it)
}
}