kotlin中提供了很多高级的语法特性,在Kotlin中的源码标准库(Standard.kt)中提供了一些Kotlin扩展的内置函数可以优化kotlin的编码。Standard.kt是Kotlin库的一部分,它定义了一些基本函数。对于这些函数我们需要慢慢地对其进行渗透和沉淀,今天就先浅显地来说一说let函数的作用和使用方法。这篇问文章在学习更深入的用法后会继续更新。
先来看一下Standard.kt中let函数的方法定义:
/**
* Calls the specified function [block] with `this` value as its argument and returns its result.
*
* For detailed usage information see the documentation for [scope functions](https://kotlinlang.org/docs/reference/scope-functions.html#let).
*/
@kotlin.internal.InlineOnly
public inline fun <T, R> T.let(block: (T) -> R): R {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
return block(this)
}
这里就不翻译了,怕越翻译越不明白,推荐大家去看kotlin官网,或者去看中文站的相关页面:作用域函数
下面通过一个例子来理解let函数的作用吧:
//当前我们假定"meat"是从服务器返回的数据,有可能为空
val food: String? = "meat"
//let第一个作用
//表示object不为null的条件下,才会去执行let函数体
food?.let {
//此处实现food不为空的情况下需要执行的代码
doSomething()
//let第二个作用
//在函数体内使用it替代object对象去访问其公有的属性和方法,此处的it就指代food
ToastUtils.showShort(it)
}
例子很简单,注释也很详细,多写一写,就慢慢地熟练和理解了。如有错漏,还请指正,不胜感激!