31DaysOfKotlin-series 1

最近从网上看到Google推送的31天学习Kotlin,觉得还不错,所以特此Mark下

  1. 处理null条件?可以使用elvis operator ‘?:

    val name: String = person.name ?: "unknown"
    val age: person.age ?: return

    如果name不为null,返回name,否则返回“unknown”,如果age为null,则整个函数返回。

    另外此处若在不为时有很多的逻辑需要处理,可以考虑使用.let或者.appy

    Read More About Null Safety

  2. 格式化String?可以在variables和experssions前面添加’$’即可。对experssions求值时,使用’${experssion}’

    val language = "Kotlin"
    
    // Kotlin has 6 characters
    val text = "$language has ${language.length} characters"

    Read More About Kotlin Basic Types

  3. Android KTX在Android开发时,实现类似Kotlin自带的解构(destructuring)操作。

    // 对应的值分别是255,255,0,0,变量名可以任意命名,但是顺序分别对应是a,r,g,b
    val (alpha, red, green, blue) = Color.RED
    
    // 只取前面两个值
    val (left, top) = Rect(1, 2, 3, 4)
    
    val (x, y) = Point(100, 200)
    
    // Not from KTZ
    val (name, age) = Person("Peng", 8)

    Destructuring Declarations - Kotlin Programming Languagekotlinlang.org

  4. Kotlin使用’when’表达式代替Java中的switch语句,when可以match很多东西,如literal values,enums,ranges of numbers,你甚至可以调用arbitrary functions

    class Train(val cargo: Number?) {
       override fun toString(): String {
           return when(cargo) {
               null, 0 -> "empty"
               1 -> "tiny"
               in 2..100 -> "small"
               is Int -> "big int"
               else -> "$cargo"
           }
       }
    }

    Control Flow: if, when, for, while - Kotlin Programming Languagekotlinlang.org

  5. 对于loops,在Kotlin中经常使用range experssions和destructuring

    //循环从1到100
    for (i in 1..100) {}
    
    //循环从100到1
    for (i in 100 downTo 1) {}
    
    //循环从1到array.size,不包含until后面的数[1,array.size),每隔一个
    val array = arrayOf("a", "b", "x")
    for (i in 1 until array.size step 2){}
    
    //destructuring an array with index and element
    for ((index, element) in array.withIndex()){}
    
    //map的循环
    val map = mapOf(1 to "one", 2 to "two")
    for ((key, value) in map){}

    Destructuring Declarations - Kotlin Programming Languagekotlinlang.org

阅读更多
个人分类: Android Kotlin
上一篇在Cordova中自定义AndroidTest(Instrumented Unit Test)
下一篇31DaysOfKotlin-series 2
想对作者说点什么? 我来说一句

FPGA流水线设计论文

2008年12月21日 217KB 下载

没有更多推荐了,返回首页

关闭
关闭