Kotlin标准函数

2018-04-17  本文已影响0人  Wavky
Kotlin标准函数.Portrait Kotlin标准函数.Landscape

run { }

run {
    使用子命名空间运行代码段
    返回最后的对象结果
}

run {
    if (firstTimeView) introView else normalView
}.show()

T.run { }

T.run {
    this 指代 T 对象
    可直接访问 T 对象内部成员
    返回最后的对象结果
}

webview.settings?.run {
    javaScriptEnabled = true
    databaseEnabled = true
}

with(T) { }

with(T) {
    this 指代 T 对象
    可直接访问 T 对象内部成员
    返回最后的对象结果
}

with(webview.settings) {
    this?.javaScriptEnabled = true
    this?.databaseEnabled = true
}

T.apply { }

T.apply {
    this 指代 T 对象
    可直接访问 T 对象内部成员
    返回 T 对象本身
}

fun createInstance(args: Bundle) 
              = MyFragment().apply { arguments = args }

fun createIntent(intentData: String, intentAction: String) =
        Intent().apply { action = intentAction }
                .apply { data = Uri.parse(intentData) }

T.let { }

T.let {
    默认 it 指代 T 对象
    更显式区分调用 T 对象成员或外部变量
    返回最后的对象结果
}

stringVariable?.let {
      println("The length of this String is ${it.length}")
}

stringVariable?.let {
      nonNullString ->  // 使用 nonNullString 取代默认 it
      println("The non null string is $nonNullString")
}

original.let {
    println("The original String is $it") // "abc"
    it.reversed() // evolve it as parameter to send to next let
}.let {
    println("The reverse String is $it") // "cba"
    it.length  // can be evolve to other type
}.let {
    println("The length of the String is $it") // 3
}

T.also { }

T.also {
    默认 it 指代 T 对象
    更显式区分调用 T 对象成员或外部变量
    返回 T 对象本身
}

original.also {
    println("The original String is $it") // "abc"
    it.reversed() // even if we evolve it, it is useless
}.also {
    println("The reverse String is ${it}") // "abc"
    it.length  // even if we evolve it, it is useless
}.also {
    println("The length of the String is ${it}") // "abc"
}

T.takeIf { } / T.takeUnless { }

T.takeIf {
    默认 it 指代 T 对象
    要求返回一个 Boolean 值
    函数根据返回的 Boolean 值决定最终返回 T 对象或 null
}
T.takeUnless {
    函数返回值与 takeIf 相反
}

val date = Date().takeIf {
    it.after(Date(2018 - 1900, 0, 1))
}

repeat(times) { }

repeat(times) {
    重复执行该代码段 times 次
    默认 it 指代当前执行次数
    无返回值
}

参考资料:

Mastering Kotlin standard functions: run, with, let, also and apply

Kotlin: Standard.kt

Kotlin之let,apply,run,with等函数区别2

try Kotlin online

上一篇下一篇

猜你喜欢

热点阅读