我们采取以下代码段:
class Foo {
fun bar(baz: (x: String) -> Unit) {
// ...
}
}
它以这种方式和baz: (String) -> Unit
正确编译(请注意x:
已在此处删除)
为什么可以将baz
函数的第一个参数命名为x
?可以以任何方式使用吗?
答案 0 :(得分:6)
这是可选的,为bar
方法的调用者提供额外的含义,让他们知道他们传递的baz
方法将作为参数接收。
当使用bar
查找Ctrl + Q
方法的文档时,它将显示在IntelliJ中,如果您在传递给{的lambda内点击x ->
,它将自动完成Ctrl + Space
{1}}也是。当然,调用者仍然可以为lambda的传入参数命名,但是如果lambda有多个参数,这可能很有用。
例如,使用此更高阶函数:
bar
当您从自动完成中选择fun bar(foo: (foo1: Int, foo2: Int, foo3: Int) -> Unit) {
// ...
}
函数时,IDEA会自动为您提供此lambda正文:
bar