Featured image of post Kotlin学习笔记-3

Kotlin学习笔记-3

kotlin的基础表达式1

Range

如果想要指定一个集合,其中包含1一直到10的自然数,只需要使用..

// 包含1和10
val onetoten = 1..10
// 包含1不包含10
val onetoten = 1..<10
// 如果需要一个递减的集合
val tentoone = 10 downTo 1

同时,也可以修改步长

// 1,3,5,7,9
val onetoten = 1..10 step 2

If

kotlin的判断if非常特殊,可以直接调用:

if (num in 1..10){
    println("one to ten")
}else if(num in 11..20){
    println("eleven to twenty")
}else{
    println("out of range")
}

同时,也可以将他作为表达式使用:

println("输出结果是:${if (num in 1..10) "one to ten" else if (num in 11..20) "eleven to twenty" else "out of range"}")

if可以拿来判断什么呢?几乎一切能够用布尔值概括的条件,true就执行,false就不执行

以下是各种可概括的条件

1 // true
1 == 1 // true
1 in 1..10 // true
0 // false
1 - 1 // false
5 !in 1..10 // false
"0" // true

When

when函数的功能与switch十分近似,同样地,他也属于表达式,所以也可以有两种用法

// 直接调用
when (input) {
    1 -> println("输入1")
    2 -> println("输入2")
    3 -> println("输入3")
    else -> {
        println("输入超过限制")
    }
}
// 作为表达式赋值
var output = when (input) {
    1 -> "输入1"
    2 -> "输入2"
    3 -> "输入3"
    else -> {
        "输入超过限制"
    }
}
println(output)

when (input) {1 -> }if (input == 1)是一个意思

同样,when也可以使用跟if一样的判断条件:

var output = when (num) {
    in 1..10 -> "tier1"
    in 11..20 -> "tier2"
    in 21..30 -> "tier3"
    else -> {
        "Unexcepted num"
    }
}
println(output)

如果我们把括号给去掉会出现语法错误吗?答案是不会,我们还可以获得两个等价的表达

var tf = when (true) {}
var tf = when {}