• Android 开发用 Kotlin 编程语言 二 条件控制


    条件语句

    1、IF 表达式

    // 传统用法
    var max = a 
    if (a < b) max = b
    
    // 使用 else 
    var max: Int
    if (a > b) {
        max = a
    } else {
        max = b
    }
     
    // 作为表达式
    val max = if (a > b) a else b
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 我们也可以把 IF 表达式的结果赋值给一个变量。
    val max = if (a > b) {
        print("Choose a")
        a
    } else {
        print("Choose b")
        b
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这也说明我也不需要像Java那种有一个三元操作符,因为我们可以使用它来简单实现:

    val c = if (condition) a else b
    
    • 1

    实例说明 (Android studio中)

    下面代码可以注意到,kotlin结尾不需要加分号(;)

    
    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            test()//调用测试方法
        }
    
        fun test(){
            var x = 10
            if(x>10){
                println("x 大于 10")
            }else if(x==10){
                println("x 等于 10")
            }else{
                println("x 小于 10")
            }
    
            var a = 1
            var b = 2
            //如果a>b 返回a 否则返回b
            val c = if (a>=b) a else b
    
            println("c 的值为 $c")
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 控制台输出结果如下:
      在这里插入图片描述

    使用区间

    使用 in 运算符来检测某个数字是否在指定区间内,区间格式为 x…y :

    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            test()
        }
    
        fun test() {
            val x = 5
    
            if (x in 1..8) {
                println("x 在区间内")
            }
        }
    }    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 输出结果如下:

    x 在区间内

    When 表达式

    • when 将它的参数和所有的分支条件顺序比较,直到某个分支满足条件。

    • when 既可以被当做表达式使用也可以被当做语句使用。如果它被当做表达式,符合条件的分支的值就是整个表达式的值,如果当做语句使用, 则忽略个别分支的值。

    • when 类似其他语言的 switch 操作符。其最简单的形式如下

    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            test()
        }
        fun test(){
            val x = 5
            when (x) {
                1 ->
                    println("x == 1")
                2 ->
                    println("x == 2")
                else -> { //注意这个块
                    println("x 不是 1 ,也不是 2")
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 输出结果如下:

    x 不是 1 ,也不是 2

    • 在 when 中,else 同 switch 的 default。如果其他分支都不满足条件将会求值 else 分支。

    • 如果很多分支需要用相同的方式处理,则可以把多个分支条件放在一起,用逗号分隔:

    class MainActivity : AppCompatActivity() {
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            test()
        }
        fun test(){
            val x = 5
            when (x) {
                1,5 ->
                    println("x == 1或者 x==5")
                2 ->
                    println("x == 2")
                else -> { //注意这个块
                    println("x 不是 1 ,也不是 2")
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 输出结果如下:

    x == 1或者 x==5

  • 相关阅读:
    openRPA开源项目源码编译
    Python学习基础笔记二十二——生成器
    BUUCTF zip伪加密 1
    网站TDK采集工具-网站的TDK设置方法
    Intellij 安装配置 lombok
    软考-网络信息安全概述
    JavaScript系列:JS实现复制粘贴文字以及图片
    本地环境下启动openFaas创建的Java的云函数
    @FeignClient(contextId = “remoteLogService“, value = ServiceNameConstants.UPMS)
    kafka 消费者的消费策略以及再平衡1
  • 原文地址:https://blog.csdn.net/afufufufu/article/details/126155831