let和run的区别是run的block是无参而let的block参数是this,他们的返回值都是block给的返回值;这里的block同also的block一样,只是多了返回值R并且作为整个let的返回值 总结: with函数是:run全局函数和扩展run函数的结合体即:with是全局函数,with有一个receiver的传入参数和对应的receiver的扩展block函数;并且返回值都...
因此,T.apply的其中一个使用场景可以用来创建一个Fragment,代码如下所示: 代码语言:javascript 复制 // 使用普通的方法创建一个FragmentfuncreateInstance(args:Bundle):MyFragment{val fragment=MyFragment()fragment.arguments=argsreturnfragment}// 通过apply来改善原有的方法创建一个FragmentfuncreateInstance(args:Bundle...
block()returnthis} 从结构上来看apply函数和run函数很像,唯一不同点就是它们各自返回的值不一样,run函数是以闭包形式返回最后一行代码的值,而apply函数的返回的是传入对象的本身。 五、内联扩展函数 also 5.1 also 函数使用的一般结构 object.also {// todo} 5.2 also 函数的inline+lambda结构 publicinlinefun<T...
在Kotlin有一些可以简化代码的语法糖,比如 run、let、with、apply、also、takeIf、takeUnless 等。 再不明白这些语法糖的情况下去看 Kotlin 代码就会一脸懵逼,可当明白之后就会觉得原来可以这样简化。 带接收者的函数字面值 使用这些语法糖之前回顾一下 Kotlin 的函数式编程,在分析 Kotlin 使用 Anko 构建布局 文章中...
下面,我将讲解Kotlin里提供用于扩展 & 方便开发者编码的几个有用内置函数:let函数、also函数、with函数、 run函数、apply函数。 1. let函数 1.1 简介 1.2 使用方法 // 作用1:使用it替代object对象去访问其公有的属性 & 方法object.let{it.todo()}
关于Kotlin的作用域函数:let、run、with、apply和also。它们有一个共同点:它们都在对象上调用,在这些函数的作用域内,可以访问对象本身,而无需其名称。 使用let作用域函数转换对象并返回结果 首个提示关于let作用域函数,当你想对一个对象执行转换并分配结果时,它特别有用: ...
前面看到的 let、with 和run 函数返回的值都是 R。但是,apply 和下面查看的 also 返回T。例如,在 let 中,没有在函数块中返回的值,最终会成为 Unit 类型,但在 apply 中,最后返回对象本身 (T) 时,它成为 Book 类型。 apply函数主要用于初始化或更改对象,因为它用于在不使用对象的函数的情况下返回自身。 2.5...
Kotlin作为一种功能强大且易用的编程语言,其标准库提供了许多实用的函数,其中run、with、let、also和apply是五个非常常用的函数。这些函数可以帮助我们更加优雅和高效地编写代码,尤其是在链式调用和处理返回值的场景下。 一、run函数 run函数是Kotlin中非常常用的一个函数,它接受一个lambda表达式作为参数,并在lambda表达...
kotlin内部帮我们封装了对象实例的let, also,apply,with高阶函数方便我们使用。 let let高阶函数的定义,返回函数体中的最后一行代码: publicinlinefun<T,R>T.let(block:(T)->R):R{contract{callsInPlace(block,InvocationKind.EXACTLY_ONCE)}returnblock(this)} ...
val tv: TextView? = mTextView?.apply { text ="haha" setTextColor(Color.BLACK) } 可以看出apply扩展函数与let扩展函数对比,省略了it,另外返回值存在差异let返回lamdba表达式最后一行代码,apply返回调用者对象本身 with函数定义 public inline fun <T, R> with(receiver: T, block: T.() -> R): R ...