Android kotlin入门与基础语法二

来源:互联网 发布:刘邦历史书籍 知乎 编辑:程序博客网 时间:2024/05/16 08:29

基本语法:
使用类型检测及自动类型转换
is运算符检测一个表达式是否某类型的一个实例。如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显示转换,代码示例:

fun getStringLength(obj:Any):Int?{     if(obj is String)    {        //'obj'在该条件分支内自动转换成'String'        return obj.length    }    //在离开类型检测分支后,'obj'仍然是'Any'类型    return null}fun main(args: Array<String>) {    println("Hello, world!")    val a=getStringLength("thanks")     println(a)}fun getStringLength(obj: Any): Int? {if (obj !is String) return null// `obj` 在这⼀分⽀⾃动转换为 `String`return obj.length}fun getStringLength(obj: Any): Int? {// `obj` 在 `&&` 右边⾃动转换成 `String` 类型if (obj is String && obj.length > 0) {return obj.length}return null}

for 循环的使用

val items = listOf("apple", "banana", "kiwi")for (item in items) {println(item)}或者val items = listOf("apple", "banana", "kiwi")for (index in items.indices) {println("item at $index is ${items[index]}")}

使用while循环

fun main(args: Array<String>) {    val items = listOf("apple", "banana", "kiwi")    var index=0    while(index<items.size){       println("item at $index is ${items[index]}")       index++    }}

使用when表达式
when表达式的神奇之处就是可以任意规则匹配when方法的参数obj值,甚至是一个表达式,然后一个帅气又直接的else就返回匹配不到的情况值,真是牛了!

fun describe(obj:Any):String= when(obj){    1->"one"    "Hello"->"Greeting"    is Long->"Long"    !is String->"Not a String"    else->"Unknown"}

区间:使用in运算符检测某个数字是否在指定区间内:
普通区间:

val x = 10val y = 9if (x in 1..y+1) {println("fits in range")}

区间迭代:

for (x in 1..5) {print(x)}输出结果: 1 2 3 4 5s

数列迭代:

for(x in 1 .. 10 step 2){   print(x)}输出结果: 1 3 5 7 9for(x in 9 downTo 0 step 3){   print(x)}输出结果: 9 6 3 0

使用集合
集合for in普通迭代

for (item in items) {println(item)}

使用when in运算符判断集合内是否包含某实例

when {"orange" in items -> println("juicy")"apple" in items -> println("apple is fine too")}

使用 lambda 表达式来过滤(filter)和映射(map)集合:

fruits.filter { it.startsWith("a") }.sortedBy { it }.map { it.toUpperCase() }.forEach { println(it) }

备注: 详细请参见lambda函数及lambda表达式