美文网首页
10. 分支语句---if & when

10. 分支语句---if & when

作者: 努力生活的西鱼 | 来源:发表于2019-11-13 20:26 被阅读0次
    Kotlin

    if表达式

    Kotlin中,if是一个表达式,即它会返回一个值。

    // 传统⽤法
    var max = a
    if (a < b) max = b
    
    // With else
    var max: Int
    if (a > b) {
    max = a
    } else {
    max = b
    }
    
    // 作为表达式
    val max = if (a > b) a else b
    

    if的分支可以是代码块,最后的表达式作为该块的值:

    val max = if (a > b) {
        print("Choose a")
        a
    } else {
        print("Choose b")
        b
    }
    

    如果你使用if作为表达式而不是语句,该表达式需要有else分支。

    private const val USERNAME = "Kotlin";
    private const val PASSWORD = "Jetbranis";
    
    private const val ADMIN_USER = "admin";
    private const val ADMIN_PASSWD = "admin";
    
    private const val DEBUG = 1;
    private const val USER = 0;
    
    fun main(args: Array<String>) {
    
        // if表达式
        val mode: Int = if (args.isNotEmpty() && args[0] == "1") {
            DEBUG;
        } else {
            USER;
        }
    
        println("请输入用户名:");
        val userName = readLine();
    
        println("请输入密码:");
        val passWord = readLine();
    
        if (mode == DEBUG && userName == ADMIN_USER && passWord == ADMIN_PASSWD) {
            println("管理员登录成功");
        } else if (userName == USERNAME && passWord == PASSWORD) {
            println("登录成功");
        } else {
            println("登录失败");
        }
    
    }
    

    when表达式

    when取代了类C语言的switch操作符。

    when (x) {
        1 -> print("x == 1")
        2 -> print("x == 2")
        else -> { // 注意这个块
            print("x is neither 1 nor 2")
        }
    }
    

    when将它的参数与所有的分支条件顺序比较,直到某个分支满足条件。when既可以被当做表达式使用也可以被当做语句使用。

    fun main(args: Array<String>) {
    
        val x = 5;
    
        when (x) {
            1 -> println("x == 1");
            2 -> println("x == 2");
            3, 4 -> println("x == 3 or x == 4");
            is Int -> println("Hello $x");
            in 1..100 -> println("$x is in 1..100");
            !in 1..100 -> println("$x is not 1..100");
            args[0].toInt() -> println("x == args[0]");
            else -> {
                println("相当于switch的default");
            }
        }
    
        val mode = when {
            args.isNotEmpty() && args[0] == "1" -> 1;
            else -> 0
        }
    
    }
    

    如果它被当做表达式,符合条件的分支的值就是整个表达式的值,如果当做语句使用,则忽略个别分支的值。
    如果其他分支都不满足条件将会求值else分支。
    如果when作为一个表达式使用,则必须有else分支。

    相关文章

      网友评论

          本文标题:10. 分支语句---if & when

          本文链接:https://www.haomeiwen.com/subject/zvvkictx.html