Kotlin学习

Kotlin Basic Learning - series 6

2018-04-20  本文已影响53人  swust_cp

Google推送的31天快速了解Kotlin,这篇就是最后一个了。但我还会继续从平时的学习中分享一些有用的学习经历

  1. Android KTX提供了bundle creator,可以让我们在创建bundle的时候更加简洁,不用再调用'putString', 'putInt'等方法,调用一次就返回一个新bundle

    val bundle = bundleOf(
         "KEY_INT" to 1, 
         "KEY_LONG" to 2L,
         "KEY_BOOLEAN" to true,
         "KEY_NULL" to null,
         "KEY_ARRAY" to arrayOf(1, 2)
     )
    

    android/android-ktxandroid-ktx - A set of Kotlin extensions for Android app development.github.com

  2. 当我们最后一个参数是回调的时候,你可以通过Lambda来cleanup callbacks,Callable以及Runnable。比如,Android KTX提供了‘postDelayed’ with Lambda。

    // Android KTX API
    fun Handler.postDelayed(delay: Int /* ... */, action: ()-> Unit)
    
    // Call it like this - no need for a Runnable in your code
    handler.postDelayed(50) {
     // pass a lambda to postDelayed
    }
    

    android/android-ktxandroid-ktx - A set of Kotlin extensions for Android app development.github.com

  3. Kotlin KTX给一些最常用的spans添加了extension,这样可以让其相关的API更加使用起来更简单。

    var string = buildSpannedString {
        append("no styling text")
        bold {
            append("bold")
            italic {
                append("bold and italic")
            }
        }
        inSpans(RelativeSizeSpan(2f), QuoteSpan()) {
            append("double sized quote text")
        }
    }
    

    android/android-ktxandroid-ktx - A set of Kotlin extensions for Android app development.github.com

  4. Kotlin提供了Parcelize可以让你实现Parcelable的时候更加的简洁

    @Parcelize
    data class User(val name: String, val occupation: Work): Parcelable
    
    // build.gradle
    androidExtensions {
        // Enable experimental Kotlin features in gradle to enable Parcelize
        experimental = true
    }
    

    Kotlin/KEEPKotlin Evolution and Enhancement Process. Contribute to KEEP development by creating an…github.com

  5. 通过使用default的参数列表来扩展现有函数API。Android KTX可以让你设置任意的一个参数。

    view.updatePadding(left = newPadding)
    view.updatePadding(top = newPadding)
    view.updatePadding(right = newPadding)
    view.updatePadding(bottom = newPadding)
    
    view.updatePadding(top = newPadding, bottom = newPadding)
    

    android/android-ktxandroid-ktx - A set of Kotlin extensions for Android app development.github.com

  6. 'let', 'apply', 'with'和‘run’都有一个receiver(this), 可能有一个argument(it)以及可能有一个返回值,下面来看一下它们的区别:

    val string = "a"
    val result = string.run {
        // this = "a"
        // it = not available
        1 // Block return value
        // result = 1
    }
    
    val string = "a"
    val result = string.let {
        // this = this@MyClass
        // it = "a"
        2 // Block return value
        // result = 2
    }
    
    val string = "a"
    val result = with(string) {
        // this = "a"
        // it = not available
        3 // Block return value
        // result = 3
    }
    
    val string = "a"
    val result = string.apply {
        // this = "a"
        // it = not available
        4 // Block return value unused
        // result = "a"
    }
    

    Read More in Kotlin Core Funcitons

上一篇下一篇

猜你喜欢

热点阅读