• 3:kotlin 逻辑控制(Control flow)


    向其他语言一样,kotlin也有循环和逻辑控制

    条件判断(Conditional expressions)

    kotlin使用ifwhen来进行条件判断

    如果纠结选择if还是when,建议使用when,因为它更能提高程序的健壮性

    if

    普通写法

    fun main() {
        val d: Int
        val check = true
    
        if (check) {
            d = 1
        } else {
            d = 2
        }
     
        println(d) // 1
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    简单写法

    kotlin中没有? :形式的三元表达式

    fun main() {
        val a = 1
        val b = 2
        val res = if (a > b) a else b
        println(res) // 2
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    when

    当有多个条件分支时使用when

    条件和执行的逻辑用->分割

    fun main() {
        val obj = "Hello"
    
        when (obj) {
            "1" -> println("One")   // 如果 obj == "1",执行当前分支
            "Hello" -> println("Greeting")  // 如果 obj == "Hello",执行当前分支
            else -> println("Unknown")  // 如果上边的所有分支都不符合,则执行当前分支
        }
        // Greeting
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    注意执行的顺序是从上而下,如果有一个条件满足了则不会进行下边的判断了

    接收返回值的when

    fun main() {
        val obj = "Hello"
    
        val result = when (obj) {
            "1" -> "One"
            "Hello" -> "Greeting"
            else -> "Unknown"
        }
        println(result) // Greeting
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    一般情况下,else分支是必须的,除非编译器检测到上边的条件覆盖了所有可能的情况

    除了上边的匹配字符串,还可以使用条件表达式

    fun main() {
        val temp = 18
    
        val description = when {
            temp < 0 -> "very cold"
            temp < 10 -> "a bit cold"
            temp < 20 -> "warm"
            else -> "hot"
        }
        println(description) // warm
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    范围(Range)

    学习循环之前先来看一下怎么创建一个Range

    常见的创建Range的方式是使用..

    • 1..4 - 1,2,3,4
    • 1..<4 - 1,2,3
    • 4 downTo 1 - 4,3,2,1
    • 1..5 step 2 - 1,3,5
    • 'a'..'d' - 'a','b','c','d'
    • 'z' downTo 's' step 2 - 'z','x','v','t'

    循环(Loops)

    编程中最常见的两种循环结构是forwhile。使用for迭代一系列值并执行操作。使用while继续操作,直到满足特定条件。

    for

    fun main() {
        for (number in 1..5) {
            print(number)
        }
    // 12345
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    fun main() {
        val cakes = listOf("carrot", "cheese", "chocolate")
        for (cake in cakes) {
            println("Yummy, it's a $cake cake!")
        }
    //    Yummy, it's a carrot cake!
    //    Yummy, it's a cheese cake!
    //    Yummy, it's a chocolate cake!
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    while

    while有两个运行方式,一种是简单的while循环

    fun main() {
        var cakesEaten = 0
        while (cakesEaten < 3) {
            println("Eat a cake $cakesEaten")
            cakesEaten++
        }
    //    Eat a cake 0
    //    Eat a cake 1
    //    Eat a cake 2
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    另一种是do-while

    fun main() {
        var cakesBaked = 0
        do {
            println("Bake a cake $cakesBaked")
            cakesBaked++
        } while (cakesBaked < 3)
    //    Bake a cake 0
    //    Bake a cake 1
    //    Bake a cake 2
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    简单while先判断条件,如果满足再去执行{}内中内,直到条件不满足为止。do-while先执行一次{}中的内容,再去判断条件。

  • 相关阅读:
    九周mooc+循环结构程序设计 2
    重视日常消防巡检有必要,智能巡检系统来帮忙
    示例:【新学期、新Flag】与CSDN的故事
    redis
    设置linux服务器同步时间
    Java方法重载
    vue中wtach和computed的区别与联系
    常用API类及异常体系
    【无标题】
    软件测试01
  • 原文地址:https://blog.csdn.net/qq_40104261/article/details/134548846