【发布时间】:2017-11-09 16:14:16
【问题描述】:
我见过一个函数有一个由 ClassName.() 给出的参数的例子 这个好像不是扩展函数,就是ClassName.Function()
一个例子是Kotterknife:
private val View.viewFinder: View.(Int) -> View?
get() = { findViewById(it) }
我不太了解的功能,
fun Activity.drawer(setup: DrawerBuilderKt.() -> Unit = {}): Drawer {
val builder = DrawerBuilderKt(this)
builder.setup()
return builder.build()
}
代码允许你直接调用的地方
drawer {
...
}
而不是给它用括号括起来的参数。
在任何地方都有这方面的文档吗?
【问题讨论】:
-
你应该看看带有接收器的 lambdas:kotlinlang.org/docs/reference/…
-
如果函数的最后一个参数是 lambda,您可以将其从括号中拉出并放入由 { } 包围的块中,如
drawer示例中所示
标签: android object kotlin navigation-drawer higher-order-functions