1 when
when就是传统的switch表达的变种
fun cas(obj: Any) {
when (obj) {
1 -> println("One")
"Hello" -> println("Greeting")
is Long -> println("Long")
!is String -> println("not a string")
else -> println("Unknown")
}
}
when表达式
fun whenExpression(obj: Any) {
var result = when (obj) {
is String -> obj.toString()
else -> "Hello"
}
}
总结起来就是
Loops
for
val cakes = listOf<String>("A", "B", "C")
for (cake in cakes) {
println("Yum, it is nice $cake cake!")
}
while do-while
var index = 5
while (index < 10) {
index++
}
do {
println(index--)
} while (index > 0)
对于loop下的几种方式有编程基础的混个脸熟带过就行
Ranges
for(i in 0..3) { // 1
print(i)
}
print(" ")
for(i in 2..8 step 2) { // 2
print(i)
}
print(" ")
for (i in 3 downTo 0) { // 3
print(i)
}
print(" ")
range也是一个基础语法方式,表示一个数据范围如 1..3
我们除了遍历也可以用于判断是否存在这个范围内
if (x !in 1..4) { // 2
print(x)
}
上面是判断x是否在1..4这个range中
Equals的判断
在kt中有==和===,但是无论哪个必须是同类才可
不同之处在于==还判断内部元素而===更多的是判断地址是否相同
看下面两个例子
val authors = setOf("Shakespeare", "Hemingway", "Twain")
val writers = setOf("Twain", "Shakespeare", "Hemingway")
println(authors == writers) // 1
println(authors === writers) // 2
上栗1的结果为true,2的结果为false,因为1是将内部数据排序然后比较数据,而2则是因为两个地址不同直接判断为false。我们再看下里
val authors = setOf("Shakespeare", "Hemingway", "Twain")
val writers = authors
println(authors == writers) // 1
println(authors === writers) // 2
根据上面的原理俩个的结果可定都是true
最后就是 典型的三目?表达式
fun max(a: Int, b: Int) = if (a > b) a else b // 1
println(max(99, -42))