美文网首页
Kotlin标准函数

Kotlin标准函数

作者: Wavky | 来源:发表于2018-04-17 21:56 被阅读0次
    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

    相关文章

      网友评论

          本文标题:Kotlin标准函数

          本文链接:https://www.haomeiwen.com/subject/koxmkftx.html