let函数:返回值 = 最后一行 / return的表达式 also函数:返回值 = 传入的对象的本身 2.2 使用示例 // let函数varresult=mVar.let{it.function1()it.function2()it.function3()999}// 最终结果 = 返回999给变量result// also函数varresult=mVar.also{it.function1()it.function2()it.function3()999}// ...
also函数:返回值 = 传入的对象的本身 2.2 使用示例 代码语言:javascript 复制 // let函数varresult=mVar.let{it.function1()it.function2()it.function3()999}// 最终结果 = 返回999给变量result// also函数varresult=mVar.also{it.function1()it.function2()it.function3()999}// 最终结果 = 返回一个m...
let 扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择;let函数另一个作用就是可以避免写一些判断null的操作。 1.1 let 函数的使用的一般结构 object.let{ it.todo()//在函数体内使用it替代object对象去访问其公有的属性和方法... }//另一种用...
apply 语法糖和 run 语法糖都类似,只不过它返回的不是 block 函数调用的结果,而是返回调用者本身,返回 T 类型。 also 语法糖 代码语言:javascript 复制 publicinline fun<T>T.also(block:(T)->Unit):T{block(this)returnthis} also 语法糖和 let 语法糖有点类似,只不过返回的结果不是 block 调用结果,而是...
在这个示例中,let函数用于计算Person对象五年后的年龄。 also also是一个扩展函数,与apply类似,但有一个关键区别:also函数的返回值是接收者对象本身,而 Lambda 表达式的参数是接收者对象,通常用it作为隐式名称。 这个函数的语法为: fun<T>T.also(block:(T)->Unit):T ...
前面看到的 let、with 和run 函数返回的值都是 R。但是,apply 和下面查看的 also 返回T。例如,在 let 中,没有在函数块中返回的值,最终会成为 Unit 类型,但在 apply 中,最后返回对象本身 (T) 时,它成为 Book 类型。 apply函数主要用于初始化或更改对象,因为它用于在不使用对象的函数的情况下返回自身。 2.5...
关于Kotlin的作用域函数:let、run、with、apply和also。它们有一个共同点:它们都在对象上调用,在这些函数的作用域内,可以访问对象本身,而无需其名称。 使用let作用域函数转换对象并返回结果 首个提示关于let作用域函数,当你想对一个对象执行转换并分配结果时,它特别有用: ...
let函数使用场景 由于函数的入参为一个参数,所以我们可以省略,用it代替。 mTextView?.let { it.setText("haha") it.setTextColor(Color.BLACK) } also函数定义 public inline fun <T> T.also(block: (T) -> Unit): T { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } block(this)...
当然我们如果出现函数链的方式将run和let交替使用会使代码更清晰 val list = listOf("Apple", "Banana", "Cherry") list.maxByOrNull { it.length }?.let { it.toLowerCase() }?.run { println(this) } 2、扩展函数apply和also:also相对apply lambda增加了将this传入。其他都是一样的可以使用this,并且...
二、let 标准库函数 三、run 标准库函数 1、run 函数传入 Lambda 表达式作为参数 2、run 函数传入函数引用作为参数 四、with 标准库函数 五、also 标准库函数 ...