apply更适合改变对象自身,用于一些初始化的操作;also则更加偏向于在处理完对象后还需要做其他相关的操作。 //创建foo之后,对成员函数进行初始化val foo =Foo().apply { bar= 1baz= 2}//创建list之后,进行后续的相关的操作val list = mutableListOf("item").also { println("$it has been created") } 3...
1、let和run let和run都会返回闭包的执行结果,区别在于let有闭包参数,而run没有。 2、also和apply also和apply都不会返回执行结果,区别在于also有闭包参数,而apply没有。 3、特殊的with with比较特殊,不是以扩展方法的形式存在,而是一个顶级函数
前面看到的 let、with 和run 函数返回的值都是 R。但是,apply 和下面查看的 also 返回T。例如,在 let 中,没有在函数块中返回的值,最终会成为 Unit 类型,但在 apply 中,最后返回对象本身 (T) 时,它成为 Book 类型。 apply函数主要用于初始化或更改对象,因为它用于在不使用对象的函数的情况下返回自身。 2.5...
上述with 函数的执行效果与下面的 run 函数执行效果是相同的 ; 代码示例 : 代码语言:javascript 复制 funmain(){val str="hello".run{capitalize()}println(str)} 执行结果 : 代码语言:javascript 复制 Hello 五、also 标准库函数 also 函数 功能与 let 函数 功能 类似 ; also 函数 将 接收者 ( 函数调用者...
let函数 also函数 with函数 run函数 apply函数 基础知识:接口回调中Lambda使用 在Kotlin中可使用Lambda函数简化一些不必要的嵌套接口回调方法 注:仅支持单个抽象方法回调,多个回调方法不支持。 // Java接口回调mVar.setEventListener(newExamEventListener(){publicvoidonSuccess(Datadata){// ...}});// 同等效果的...
这几个函数非常相似,有细微区别,下面举例说明。 1、先新建一个数据类 2、在main方法中测试下with 操作当前对象,可返回另外一个值 apply 操作当前对象,返...
let 与 also 将 T 作为 it 传入 block,区别在于返回结果分别为 block 最后一行结果与 T本身 run 与 apply 将 T 作为 this 传入 block,区别在于返回结果分别为 block 最后一行结果与 T本身 with 也是将 T 作为 this 传入 block 并返回 block 最后一行结果,区别在于写法是 with(T) 1、let – block: (T)...
关于Kotlin的作用域函数:let、run、with、apply和also。它们有一个共同点:它们都在对象上调用,在这些函数的作用域内,可以访问对象本身,而无需其名称。 使用let作用域函数转换对象并返回结果 首个提示关于let作用域函数,当你想对一个对象执行转换并分配结果时,它特别有用: ...
这次我们就来聊⼀聊Kotlin的⼀些通⽤的扩展标准函数run,with,let,also和apply。对于这五个标准函数它们都存在于Kotlin的源码标准库当中,也就是在Standard.kt⽂件当中。它们都是适⽤于任何对象的通⽤扩展函数。但是对于run,with,let,also和apply这五个函数他们的⽤法及其相似,以⾄于我们⽆法确定去...