gpt4 book ai didi

android - ".()"在 Kotlin 中是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 13:34:11 25 4
gpt4 key购买 nike

我见过一个函数有一个由 ClassName.() 给出的参数的例子这个好像不是扩展函数,就是ClassName.Function()

一个例子是Kotterknife :

private val View.viewFinder: View.(Int) -> View?
get() = { findViewById(it) }

我不太了解的功能,

MaterialDrawerKt

fun Activity.drawer(setup: DrawerBuilderKt.() -> Unit = {}): Drawer {
val builder = DrawerBuilderKt(this)
builder.setup()
return builder.build()
}

代码允许你直接调用的地方

drawer {
...
}

而不是给它用括号括起来的参数。

在任何地方都有这方面的文档吗?

最佳答案

在 Kotlin 中一个不接受任何内容并且不返回任何内容的函数如下所示:

var function : () -> Unit

不同之处在于代码中的函数不接受任何内容,不返回任何内容,而是在对象上调用

例如,

class Builder (val multiplier: Int) {

fun invokeStuff(action: (Builder.() -> Unit)) {
this.action()
}

fun multiply(value: Int) : Int {
return value * multiplier
}
}

这里重要的是我们声明 action

类型的方式
action: (Builder.() -> Unit)

这是一个不返回任何内容的函数,不接受任何内容,但Builder 类型的对象上调用。

这意味着当我们像这样使用这个构建器时

var builder = Builder(10)
builder.invokeStuff({
var result = multiply(1)
println(result)
})

this 的上下文已设置为构建器对象,我们可以调用构建器中声明的函数。

Refer more here

关于android - ".()"在 Kotlin 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44427382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com