在上面的讲述的run,with,T.run,T.let中它们返回的都是作用域中最后一个对象。当然它们所返回的值是允许和接受者it或者this对象的类型不同。但是并不是所有的标准函数都是返回作用域的最后一个对象。例如T.also函数。 代码语言:javascript 复制 val original="abc"original.let{println("The original String is $...
在这个示例中,我们首先使用also函数打印了number的值,然后使用let函数计算了number的平方,并将结果赋值给result变量。最后,我们打印了result的值,输出为100。 五、apply函数 apply函数也是一个扩展函数,它接受一个lambda表达式作为参数,并在当前对象上执行该lambda表达式。apply函数与also函数类似,但apply函数会返回lambda表...
功能:with函数和前面的几个函数使用方式略有不同,因为它不是以扩展的形式存在的。它是将某对象作为函数的参数,在函数块内可以通过 this 指代该对象。返回值为函数块的最后一行或指定return表达式。 示例: val a = with("string") { println(this) 3 } println(a) 运行结果: string 3...
其次,传递的参数是带接收者对象的函数字面值,也就是说可以在 block 函数里面调用 T 的相关方法,通过 this 来指代 T ,在 run 方法内部就是调用了 block 方法,返回 block 函数调用后的结果。 调用示例: 代码语言:javascript 复制 val result="a".run{this.plus("b")} Contracts DSL 在run 的语法糖里面还出...
一、apply函数 apply apply函数可以看作是一个配置函数,你可以传入一个接收者,然后调用一系列函数来配置它以便使用,如果提供lambda表达式给 apply函数执行,它会返回配置好的接收者。 可以看到,调用一个个函数类配置接收者时,变量名就省略掉了。 这是因为,在lambda表达式里,apply能让每个配置函数都作用于接收者, ...
kotlin中,let、run、with、apply、also这几个标准函数使用起来非常方便,合理使用可以很大程度上的简化代码,但是这几个标准函数用法和功能相似,初学kotlin时,很容易会不知道该选哪一个,其实看下源码并熟悉kotlin的高阶函数就很容易理解了。这几个标准函数的源码如下,新版本里面加入了一些别的代码,不过不影响这里的说明...
下面我将关于run、with、T.run、T.let、T.also 和 T.apply这些函数,并把它们称为作用域函数,因为我注意到它们的主要功能是为调用者函数提供内部作用域。 说明作用域最简单的方式是run函数: fun test() { var mood = "I am sad" run { val mood = "I am happy" ...
一、回调函数的Kotin的lambda的简化 在Kotlin中对Java中的一些的接口的回调做了一些优化,可以使用一个lambda函数来代替。可以简化写一些不必要的嵌套回调方法。但是需要注意:在lambda表达式,只支持单抽象 点赞(0)踩踩(0)反馈 所需:1积分电信网络下载 STC8G1K08A外部中断的使用(原理+代码+完整工程) ...
作用域函数是Kotlin比较重要的一个特性,共分为以下5种:let、run、with、apply 以及 also,这五个函数的工作方式可以说非常相似,但是我们需要了解的是这5种函数的差异,以便在不同的场景更好的利用它。源码// letpublic inline fun <T, R> T.let(block: (T) -> R