主页 > 游戏开发  > 

【Kotlin】标准库函数③(with标准库函数|also标准库函数)

【Kotlin】标准库函数③(with标准库函数|also标准库函数)

文章目录 一、with 标准库函数二、also 标准库函数

Kotlin 语言中 , 在 Standard.kt 源码中 , 为所有类型定义了一批标准库函数 , 所有的 Kotlin 类型都可以调用这些函数 ;

一、with 标准库函数

with 函数 与 run 函数 功能是一样的 ,

其使用形式不同 , with 函数是 独立使用的 ,

调用时 , 需要 将 接收者实例对象 作为 with 函数的 参数 ;

with 函数原型 :

/** * 以给定的[receiver]作为接收者调用指定的函数[block]并返回其结果。 * * 有关详细使用信息,请参阅[scope functions]的文档 * ( 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】标准库函数③(with标准库函数|also标准库函数)