Kotlin标准库函数 ③ ( with 标准库函数 | also 标准库函数 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin标准库函数 ③ ( with 标准库函数 | also 标准库函数 )相关的知识,希望对你有一定的参考价值。
文章目录
Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的 Kotlin 类型都可以调用这些函数 ;
一、with 标准库函数
with 函数 与 run 函数 功能是一样的 ,
其使用形式不同 , with 函数是 独立使用的 ,
调用时 , 需要 将 接收者实例对象 作为 with 函数的 参数 ;
with 函数原型 :
/**
* 以给定的[receiver]作为接收者调用指定的函数[block]并返回其结果。
*
* 有关详细使用信息,请参阅[scope functions]的文档
* (https://kotlinlang.org/docs/reference/scope-functions.html#with)。
*/
@kotlin.internal.InlineOnly
public inline fun <T, R> with(receiver: T, block: T.() -> R): R
contract
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
return receiver.block()
with 函数的第一个参数是 receiver: T 接收者 ,
第二个参数是 block: T.() -> R , 是 T.() -> R 类型的 Lambda 表达式 ;
代码示例 :
fun main()
val str = with("hello")
capitalize()
println(str)
执行结果 :
Hello
上述 with 函数的执行效果与下面的 run 函数执行效果是相同的 ;
代码示例 :
fun main()
val str = "hello".run
capitalize()
println(str)
执行结果 :
Hello
二、also 标准库函数
also 函数 功能与 let 函数 功能 类似 ;
also 函数 将 接收者 ( 函数调用者 ) 作为参数传递给 Lambda 表达式参数 ,
并返回 接收者实例对象本身 ;
also 函数 与 let 函数 返回值不同 ,
also 函数 返回 接收者对象本身 ,
let 函数 返回 Lambda 表达式的最后一行 ;
also 函数 返回 接收者对象本身 , 那么就可以使用该特性 , 对 接收者 执行 函数式编程的 链式调用 ;
代码示例 :
fun main()
val str = "hello".also
println(it)
.also
// 该对象的生命周期仅限于该闭包
println(it.capitalize())
// 最终打印的是最初的 接收者对象
println(str)
执行结果 :
hello
Hello
hello
以上是关于Kotlin标准库函数 ③ ( with 标准库函数 | also 标准库函数 )的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )
Kotlin标准库函数总结 ( apply 函数 | let 函数 | run 函数 | with 函数 | also 函数 | takeIf 函数 | takeUnless 函数 )