Kotlin之内置函数-创新互联
                                            在Kotlin中提供了我们方便使用的内置函数,本章主要了解以下

- 1、函数特性概况
- 2、apply 函数
- 3、also 函数
- 4、let函数
- 5、run函数
- 6、with函数
- 7、takeIf
- 8、takeUnless
- 9、全部代码
 
- apply:返回调用者本身,匿名函数持有this,方便链式调用
- also: 返回调用者本身,匿名函数持有it,方便链式调用
- let:返回匿名函数最后一行返回值,持有 it
- run:返回匿名函数最后一行返回值,持有 this
- with:返回匿名函数最后一行返回值,持有 this
- takeIf:当匿名函数返回true的时候,就返回调用者本身,否则就返回null
- takeUnless:当匿名函数返回false的时候,就返回调用者本身,否则就返回null
如果上面这些特性都很清楚,那基本可以不用往下看了
2、apply 函数apply函数的特点:返回调用者本身,匿名函数持有this,方便链式调用
val info = "Kotlin Hello World"
    //正确使用apply函数的写法
    //apply特点:apply函数始终是返回 调用者本身,所以可以链式调用
    info.apply {//匿名函数中持有this,this可以省略不写
        println("字符串长度是:${length}")
    }.apply {println("最后一个字符是:${this[length - 1]}")
    }.apply {println("全部转成大写是:${uppercase()}")
    }
输出:
字符串长度是:18
最后一个字符是:d
全部转成大写是:KOTLIN HELLO WORLDalso函数特点:返回调用者本身,匿名函数持有it,方便链式调用
//正确使用also函数的写法
    //also特点:also函数始终是返回 调用者本身,所以可以链式调用
    info.also {//匿名函数中持有it
        println("字符串长度是:${it.length}")
    }.also {println("最后一个字符是:${it[it.length - 1]}")
    }.also {println("全部转成小写是:${it.lowercase()}")
    }输出:
字符串长度是:18
最后一个字符是:d
全部转成小写是:kotlin hello worldapply、also用法总结:
- 相同点:返回值都是调用者本身,都是方便链式调用
- 不同点:apply持有this而also持有的是it
Let函数特点:返回匿名函数最后一行返回值,持有 it
//正确使用let函数的写法
    //let特点:let函数返回匿名最后一行返回值,内部持有it
    val letReturn = info.let {println("it当前内容是:$it")
        456.5f
        "Hello"
        false
        it.length//最后一行返回长度Int
    }
    println("最终返回结果1=$letReturn")
    val letReturn2 = letReturn.let {println("it当前内容是:$it")
        "当前字符串长度是${it + 88}"//最后一行返回String
    }
    println("最终返回结果2=$letReturn2")
输出:
it当前内容是:Kotlin Hello World
最终返回结果1=18
it当前内容是:18
最终返回结果2=当前字符串长度是106
run函数特点:返回匿名函数最后一行返回值,持有 this
//正确使用run函数的写法
    //run特点:run函数返回匿名最后一行返回值,内部持有this
    val runReturn = info.run {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$runReturn")
    val runReturn2 = runReturn.run {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$runReturn2")
   输出:
当前内容是:Kotlin Hello World
最终返回结果1=18
当前内容是:18
最终返回结果2=当前字符串长度是106let、run用法总结:
- 相同点:返回值都是匿名函数最后一行的返回值
- 不同点:run持有this而let持有的是it
with函数特点:返回匿名函数最后一行返回值,持有 this
//正确使用with函数的写法
    //with特点:with函数返回匿名最后一行返回值,内部持有this
    val withReturn = with(info) {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$withReturn")
    val withReturn2 = with(withReturn) {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$withReturn2")输出:
当前内容是:Kotlin Hello World
最终返回结果1=18
当前内容是:18
最终返回结果2=当前字符串长度是106with、run用法总结:
- 相同点:返回值都是匿名函数最后一行的返回值,匿名函数中都持有this
- 不同点:调用方式不同
takeIf函数特点:当匿名函数返回true的时候,就返回调用者本身,否则就返回null
info.takeIf {false }
info.takeIf {true }
println("takeIf false=${info.takeIf {false }}")
println("takeIf true=${info.takeIf {true }}")输出:
takeIf false=null
takeIf true=Kotlin Hello WorldtakeUnless函数特点:当匿名函数返回false的时候,就返回调用者本身,否则就返回null
info.takeUnless {false }
 info.takeUnless {true }
 println("takeUnless false=${info.takeUnless {false }}")
 println("takeUnless true=${info.takeUnless {true }}")输出:
takeUnless false=Kotlin Hello World
takeUnless true=nulltakeIf、takeUnless用法总结:
两个函数用法一样,功能正好相反
takeIf、takeUnless一般不单独使用,都是配合空合并符一起使用,如下:
info.takeIf {false }?:"当前信息是null"fun main() {val info = "Kotlin Hello World"
    //正确使用apply函数的写法
    //apply特点:apply函数始终是返回 调用者本身,所以可以链式调用
    info.apply {//匿名函数中持有this,this可以省略不写
        println("字符串长度是:${length}")
    }.apply {println("最后一个字符是:${this[length - 1]}")
    }.apply {println("全部转成大写是:${uppercase()}")
    }
    println()
    //正确使用also函数的写法
    //also特点:also函数始终是返回 调用者本身,所以可以链式调用
    info.also {//匿名函数中持有it
        println("字符串长度是:${it.length}")
    }.also {println("最后一个字符是:${it[it.length - 1]}")
    }.also {println("全部转成小写是:${it.lowercase()}")
    }
    println()
    //正确使用let函数的写法
    //let特点:let函数返回匿名最后一行返回值,内部持有it
    val letReturn = info.let {println("it当前内容是:$it")
        456.5f
        "Hello"
        false
        it.length//最后一行返回长度Int
    }
    println("最终返回结果1=$letReturn")
    val letReturn2 = letReturn.let {println("it当前内容是:$it")
        "当前字符串长度是${it + 88}"//最后一行返回String
    }
    println("最终返回结果2=$letReturn2")
    println()
    //正确使用run函数的写法
    //run特点:run函数返回匿名最后一行返回值,内部持有this
    val runReturn = info.run {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$runReturn")
    val runReturn2 = runReturn.run {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$runReturn2")
    println()
    //正确使用with函数的写法
    //with特点:with函数返回匿名最后一行返回值,内部持有this
    val withReturn = with(info) {println("当前内容是:$this")
        456.5f
        "Hello"
        false
        length//最后一行返回长度Int,this可以省略
    }
    println("最终返回结果1=$withReturn")
    val withReturn2 = with(withReturn) {println("当前内容是:$this")
        "当前字符串长度是${this + 88}"//最后一行返回String
    }
    println("最终返回结果2=$withReturn2")
    println()
    info.takeIf {false }
    info.takeIf {true }
    println("takeIf false=${info.takeIf {false }}")
    println("takeIf true=${info.takeIf {true }}")
    println()
    info.takeUnless {false }
    info.takeUnless {true }
    println("takeUnless false=${info.takeUnless {false }}")
    println("takeUnless true=${info.takeUnless {true }}")
    println()
    info.takeIf {false }?:"当前信息是null"
    println(info.takeIf {false } ?: "当前信息是null")
}你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网页标题:Kotlin之内置函数-创新互联
地址分享:http://www.cqwzjz.cn/article/depijd.html

 建站
建站
 咨询
咨询 售后
售后
 建站咨询
建站咨询 
 