Kotlin学习——流程控制,when,循环,range工具 & kt里的equals & if实现类似三元表达式的效果_kotlin then

89 阅读2分钟

fun main() { cases("hello") cases("1") cases(3.6) cases(2) cases(1)

val resp = whenAssign(1)
println(resp)

}


## 循环loops



### for,while,do while



package com.tianju.ktFlow // list val cakes = listOf("cat","rabbit","dog") fun eatCake() = println("Eat a Cake") fun throwCake() = println("Throw a cake")

fun main() {

// for循环
for (cake in cakes){
    println("cake looks like $cake ")
}

// while循环
var cakeEat = 0 // val 类型不能被重新设置
while (cakeEat < 3){
    eatCake()
    cakeEat ++
}

// do-while循环
var throwCake = 0
do {
    throwCake()
    throwCake ++
}while (throwCake < 2)

}


### Iterators 自定义迭代


* 定义一个iterator,名字必须是 iterator
* 当list有下一个时,返回animal 即,满足hasNext()`:` Boolean,next()`:` Animal



package com.tianju.ktFlow

class Animal(val name:String)

class Zoo(val animals:List){

/\*\*

* 定义一个iterator,名字必须是这个; * 当list有下一个时,返回animal */ operator fun iterator():Iterator{ return animals.iterator() } }

fun main() { val zoo = Zoo(listOf(Animal("tiger"),Animal("lion"))) for (animal in zoo){ println("the animal is animal,nameisanimal, name is {animal.name}") } }


## range工具


Kotlin中有一套用于定义范围的工具


* … 表示范围 左闭右闭,包括2
* until 左闭右开,不包括3
* step 步长为2
* downTo 从大到小
* char类型也能用,也支持 step
* 在 if语句中 使用range



package com.tianju.ktFlow

fun main() {

// .. 表示范围 左闭右闭,包括2
for (i in 0..2){
    println(i)
}

// until 左闭右开,不包括3
for (i in 0 until 3){
    println(i)
}

// step 步长为2
for (i in 2..8 step 2){
    println(i)
}

// 从大到小
println("\*\*\*\*\*\*\*\*")
for (i in 3 downTo 0){
    println(i)
}

println("\*\*\*\*\*\*\*char\*\*\*\*\*\*\*\*")
for (c in 'a'..'d'){
    println(c)
}

// char也支持 step
for (c in 'z' downTo 's' step 2){
    println(c)
}

// 在 if语句中 使用range
val x =2
if (x in 1..5){
    println("x is in range from 1 to 5")
}

if (x !in 6..10){
    println("x is not in range from 6 to 10")
}

}


## equals等于


* ==比较值是否相同,相当于 equals
* === 比较两个引用是否指向同一个对象



package com.tianju.ktFlow

val authors = setOf("pet","shi","tan") val writers = setOf("tan","pet","shi")

fun main() { // 比较值是否相同,相当于 equals println(authors == writers) println(authors.equals(writers))

// 比较两个引用是否指向同一个对象
println(authors === writers)

}


## 类三元表达式


kt 里面没有三元表达式,可以使用if实现



package com.tianju.ktFlow

/** * kt 里面没有三元表达式 * ternary operator condition ? then : else */

// 可以使用if作为表达式实现 fun max(a:Int,b:Int) = if (a>b) a else b

fun main() { println(max(39,45)) }




---



## 总结


1.kt中的when语句具有较大的灵活性;  
 2.kt中的循环,支持自定义迭代器;  
 3.range工具,快速定义循环方式,开始,结束,步长;  
 4.equals等于,==比较值,而 ===比较引用;  
 5.if语句实现类似三元表达式的效果;








![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/5d2651295357402686da6897d65c3238~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzIxMjA3NDIwNDUy:q75.awebp?rk3s=f64ab15b&x-expires=1771139824&x-signature=5jkCR9ZGPnLoevlwHsPJcaq1bOI%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/8c0950403bf440e8b924df5df329ad89~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzIxMjA3NDIwNDUy:q75.awebp?rk3s=f64ab15b&x-expires=1771139824&x-signature=AtBRjoqC7KPSwXdN292BUqCHlo4%3D)
![img](https://p6-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/b4127ed9eaf348d8a5a56d39c6064a33~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MzIxMjA3NDIwNDUy:q75.awebp?rk3s=f64ab15b&x-expires=1771139824&x-signature=B%2BAavLLYz1%2BebXE9lBJftYeQaoM%3D)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**

**开源项目:docs.qq.com/doc/DSlVlZExWQ0FRSE9H**