我是靠谱客的博主 慈祥可乐,最近开发中收集的这篇文章主要介绍Kotlin 标准库函数前言,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前言

为什么要用标准库函数?因为 言简意赅! 本篇介绍的是 let、run、apply、also、with 函数。

一、let

将调用者作为 函数block 的参数,最终返回  函数block 的返回值。

@kotlin.internal.InlineOnly
public inline fun <T, R> T.let(block: (T) -> R): R {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    return block(this)
}

例子

val numbers = mutableListOf("one", "two", "three", "four", "five")
    numbers.map { it.length }.filter { it > 3 }.let {
        println(it)
        // and more function calls if needed
    }

 let 函数只有一个 lambda 函数作为参数,所以 let 的 " () " 可以省略不写。

lambda 函数只有一个参数,所以在代码块中可以用 " it " 来代替

lambda 函数块中没有return 语句,但是会隐式返回最后一行函数的返回值

 

二、run

@kotlin.internal.InlineOnly
public inline fun <T, R> T.run(block: T.() -> R): R {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    return block()
}

返回结果和 let 很一样,不同的是 bloack 代码块中 默认的方法和变量引用都是基于 调用者。因为调用者是这个表达式的接收者类型

例子

File("").run {
        setReadable(true)
        setWritable(true)
    }

三、apply

@kotlin.internal.InlineOnly
public inline fun <T> T.apply(block: T.() -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block()
    return this
}

返回的是 apply 函数 的调用者实例,同时,调用者也是该表达式的接受者类型

 val file = File("").apply {
        setReadable(true)
        setWritable(true)
    }

四、also

@kotlin.internal.InlineOnly
@SinceKotlin("1.1")
public inline fun <T> T.also(block: (T) -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block(this)
    return this
}

将调用者做作为 bloack 表达式的参数,返回调用者

val file = File("").also {
        it.setReadable(true)
        it.setWritable(true)
    }

五、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(File(""),{
        setWritable(true)
        setReadable(true)
    })

最后总结

函数对象引用返回值
letitlambda result
runthislambda result
withthislambda result
applythisContext object
alsoitContext object

 

 

最后

以上就是慈祥可乐为你收集整理的Kotlin 标准库函数前言的全部内容,希望文章能够帮你解决Kotlin 标准库函数前言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部