kotlin流程控制语句,官网:https://kotlinlang.org/docs/reference/control-flow.html
Control Flow: if, when, for, while
kotlin中的流程语句主要有四个 if when for while,现在一个个来.
If Expression
In Kotlin, if is an expression, i.e. it returns a value. Therefore there is no ternary operator (condition ? then : else), because ordinary if works fine in this role
在Kotlin中,如果是表达式,即返回一个值。 因此,没有三元运算符(条件?then:else),因为普通if在此角色下工作正常
//传统写法
fun main(){
var a:Int = 3;
var b:Int = 4;
if(a>b){
print("a大于b")
}else{
print("a小于b")
}
}
上面是传统写法,其实还有更简单的写法,使用表达式的方式
//表达式
fun main(){
var a:Int = 3;
var b:Int = 4;
val max = if (a > b) a else b
print("max-->"+max);
}
如果if或者else里面下的逻辑代码特别多,那使用这个就行不通了,那还是要和Java中的if...else一样
如果分支可以是块,并且最后一个表达式是块的值,这点就比Java强很多了
//表达式
fun main(){
var a:Int = 3;
var b:Int = 4;
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}
print(max)
}
if或者else语句的最后一句是表达式中的值,那么这个时候if表达式的返回值就是这个值了,
When Expression
when语句就好比Java中的switch,但是比switch强很多
fun main(args:Array<String>){
var x:Int=1
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
}
when依次将其参数与所有分支匹配,直到满足某些分支条件。 when可以用作表达式或语句。 如果将其用作表达式,则满足的分支的值将成为整个表达式的值。 如果将其用作语句,则忽略各个分支的值。 (与if一样,每个分支可以是一个块,其值是该块中最后一个表达式的值。)
如果其他分支条件都不满足,则评估else分支。 如果将when用作表达式,则else分支是必需的,除非编译器可以证明所有可能的情况都被分支条件覆盖(例如,枚举类条目和密封类子类型)
如果许多情况下应以相同的方式处理,则分支条件可以用逗号组合,比如
when (x) {
0, 1 -> print("x == 0 or x == 1")
else -> print("otherwise")
}
上面0和1处理方式是一样的,则可以放在一块处理.
我们可以使用任意表达式(不仅是常量)作为分支条件
when (x) {
parseInt(s) -> print("s encodes x")
else -> print("s does not encode x")
}
相当于Java中的case中不一定是常量 在kotlin中表达式也可以作为case的条件
我们还可以检查范围或集合中处于或!
when (x) {
in 1..10 -> print("x is in the range")
in validNumbers -> print("x is valid")
!in 10..20 -> print("x is outside the range")
else -> print("none of the above")
}
在kotlin中用于在某个范围可以使用..比如1到100 可以写成这样 1..100 代码表示
var i = 1..100
For Loops
for (item in collection) print(item)
在kotlin中for表达式要比Java中书写更容易, 跟groovy语法比较像 在kotlin中for循环的写法
for (item: Int in ints) {
// ...
}
简单的例子:
fun main(args:Array<String>){
val list = listOf<Int>(1,2, 3,4)
for(item:Int in list){
println("item-->"+item)
}
}
for循环不一定一定要使用集合或者数组,也可以使用范围,这点在Java中是没有这个语法的
fun main(args: Array<String>){
for (i in 1..3) {
println(i)
}
}
for循环在有些需求我们要求是倒序 那么在kotlin中怎么写呢? kotlin中提高了downTo
fun main(args:Array<String>){
for (i in 6 downTo 5) {
println(i)
}
}
downTo后面的数字表示倒序到那 上面是5表示从6到5 就二个数字
downTo后面的数字不能大于前面的数字