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 {}