Google推送的31天快速了解Kotlin,这篇就是最后一个了。但我还会继续从平时的学习中分享一些有用的学习经历
    
   
- 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
    
   
- 
当我们最后一个参数是回调的时候,你可以通过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
 
- 
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
 
- 
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 }
- 
通过使用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
 
- 
‘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" }
 
