从结构上来看apply函数和run函数很像,唯一不同点就是它们各自返回的值不一样,run函数是以闭包形式返回最后一行代码的值,而apply函数的返回的是传入对象的本身。 五、内联扩展函数 also 5.1 also 函数使用的一般结构 object.also {// todo} 5.2 also 函数的inline+lambda结构 publicinlinefun<T>T.also(block: (...
run 适用于let,with函数任何场景。因为run函数是let,with两个函数结合体,准确来说它弥补了let函数在函数体内必须使用it参数替代对象,在run函数中可以像with函数一样可以省略,直接访问实例的公有属性和方法,另一方面它弥补了with函数传入对象判空问题,在run函数中可以像let函数一样做判空处理 apply 整体作用功能和run...
.run{println("my name is $name, I am $age years old")}// JavaUser peole=newPeople("carson",25);String var1="my name is "+peole.name+", I am "+peole.age+" years old";System.out.println(var1); 5. apply函数 5.1 作用 & 应用场景 与run函数类似,但区别在于返回值: run函数返回最...
.run{println("my name is $name, I am $age years old")}// JavaUser peole=newPeople("carson",25);String var1="my name is "+peole.name+", I am "+peole.age+" years old";System.out.println(var1); 5. apply函数 5.1 作用 & 应用场景 与run函数类似,但区别在于返回值: run函数返回最...
这次我们就来聊一聊Kotlin的一些通用的扩展函数run,with,let,also和apply。对于这五个扩展函数它们都存在于Kotlin的源码标准库当中,也就是在Standard.kt文件当中。它们都是适用于任何对象的通用扩展函数。但是对于run,with,let,also和apply这五个函数他们的用法及其相似,以至于我们无法确定去选择使用哪一个。那么现在...
run run这个函数给了两种方式 publicinline fun<T,R>T.run(block:T.()->R):Rpublicinline fun<R>run(block:()->R):R 先看第一种,看起来就是把let中函数参数中的 T 类型参数改成了接收者类型,也是返回 R 类型;这和apply与also的区别是一样的。
关于Kotlin的作用域函数:let、run、with、apply和also。它们有一个共同点:它们都在对象上调用,在这些函数的作用域内,可以访问对象本身,而无需其名称。 使用let作用域函数转换对象并返回结果 首个提示关于let作用域函数,当你想对一个对象执行转换并分配结果时,它特别有用: ...
let、with、apply、run、also这几个高阶函数非常相似,看定义也非常简单,初学kotlin时要么不记得使用它们,要么不知道选用哪个函数。 标准库之所以设计这些高阶函数,必定有需求和使用场景,本文讨论几个常见的使用场景。解决那些习惯Java语言的程序员们,初次使用kotlin造成困扰。
also函数与let函数使用上差异不大,只是函数返回类型存在差异,let返回lamdba表达式最后一行代码,also返回调用者对象本身 also函数使用场景 val tv:TextView?= mTextView?.also { it.setText("haha") it.setTextColor(Color.BLACK) }apply函数定义 public inline fun <T> T.apply(block: T.() -> Unit): T ...
共有以下五种:let、run、with、apply以及also。 废话不多说,先把从 kotlin 官方上扒拉下来的结论放...