美文网首页
Kotlin表达式(二)

Kotlin表达式(二)

作者: 小赵不在 | 来源:发表于2020-10-20 10:16 被阅读0次

语句和表达式的区别

  • 表达式有值,能作为另一个表达式的一部分
  • 语句没有值,总是包围着它代码块中的顶层元素

Kotlin和Java的区别

  • Java中,所有控制结构都是语句,都没有值
  • Kotlin中,除了循环(for、do和do/while)以外,大多数控制结构都是表达式(if/when等)

Example1:if语句

Java代码:

public int max(int a, int b) {
    if (a > b) {
        return a;
    } else {
        return b;
    }
}

Kt代码:(Kotlin中,if是表达式,不是语句,可以直接return if表达式)

fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}

简化版Kt代码:
fun max2(a: Int, b: Int) = if (a > b) a else b

Example2:when语句

Kotlin中的when,完全可以取代Java中的switch和if/else,when也是表达式,when的每个分支的最后一行为当前分支的值
Java中的switch代码:

public String getPoint(char grade) {
        switch (grade) {
            case 'A':
                return "GOOD";
            case 'B':
            case 'C':
                return "OK";
            case 'D':
                return "BAD";
            default:
                return "UN_KNOW";
        }
    }

Kt中的when代码:

fun getPoint(grade: Char) = when (grade) {
    'A' -> "GOOD"
    'B', 'C' -> {
        println("test when")
        "OK"
    }
    'D' -> "BAD"
    else -> "UN_KNOW"
}

Java中的if else代码:

public String getPoint2(Integer point) {
        if (point > 100) {
            return "GOOD";
        } else if (point > 60) {
            return "OK";
        } else if (point.hashCode() == 0x100) {
            //...
            return "STH";
        } else {
            return "UN_KNOW";
        }
    }

Kt中的when代码:

fun getPoint2(grade: Int) = when {
    grade > 90 -> "GOOD"
    grade > 60 -> "OK"
    grade.hashCode() == 0x100 -> "STH"
    else -> "UN_KNOW"
}

相关文章

网友评论

      本文标题:Kotlin表达式(二)

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