4.2.4 when表达式
fun main(args: Array<String>){
var score = 'B'
val str = when (score) {
'A' -> {
println("望百尺竿头更进步")
"优秀"
}
'B' -> {
println("不拼一把,你不知道自己的能力")
"良好"
}
'C' -> "中"
'D' -> "及格"
else -> {
println("啥也不说了,下次再来")
"不及格"
}
}
println(str)
}
4.2.5 when分支处理范围
fun main(args: Array<String>){
val age = java.util.Random().nextInt(100)
println(age)
//使用when表达式对str赋值
var str = when (age){
in 10..25 -> "当时年少青衫薄"
in 26..50 -> "风景依稀似去年"
in 51..80 -> "醉听清吟胜管弦"
else -> "其他"
}
println(str)
}
39
4.2.6 when分支处理类型
fun main(args: Array<String>){
var inputPrice = 26
println(realPrice(inputPrice))
}
//程序对inputPrice的类型进行判断
fun realPrice(inputPrice: Any) = when(inputPrice){
//如果inputPrice的类型为String,程序返回该字符串转换的Double值
is String -> inputPrice.toDouble()
//如果inputPrice的类型为Int,程序返回该Int值转换的Double值
is Int -> inputPrice.toDouble()
is Double -> inputPrice
else -> 0.0
}
4.2.7 when条件分支
when分支还可以用来取代if... else if链,此时不需要为when分支提供任何条件表达式,此时每个分支条件都是一个布尔表达式,当指定分支的布尔表达式为true时执行该分支。例如如下代码。
fun main(args: Array<String>){
//读取一行输入val ln = readLine()// ln是String?类型,所以需要先判断ln不为null
if(ln != null){
// when分支不需要任何条件表达式
when {
//每个分支条件都是布尔表达式
ln.matches(Regex("\\d+")) -> println("您输入的全是数字")
ln.matches(Regex("[a-zA-Z]+")) -> println("您输入的全是字母")
ln.matches(Regex("[a-zA-Z0-9]+")) -> println("您输入的是字母和数字")
else -> println("您输入的包含特殊字符")
}
}
}
124327
以上内容节选自《疯狂Kotlin讲义》:一本让您最直接认识Kotlin的疯狂讲义
往期连载
第二十一期:juejin.im/post/5a20bb…
相关书籍《疯狂Android讲义》item.jd.com/11689014.ht…