"Lambda with Receiver":这个Kotlin构造是什么?

ZoS*_*Sal 5 dsl lambda receiver kotlin

我正在看这个Kotlin对象声明:

object A : B({
    variableName1 = "text1"
    variableName2 = "text2"

    params {
        param("Foo", "Bar")
    }
})
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚B类构造函数的参数是什么.

我有目的地在这个例子中抽象出信息,但实际上是B类

jetbrains.buildServer.configs.kotlin.v10.BuildType
Run Code Online (Sandbox Code Playgroud)

我找不到该类型的文档.我发现了一些接近的东西,但它是一个接口的定义,因此没有构造函数.

总而言之,Kotlin的以下构造是什么?

{
    variableName1 = "text1"
    variableName2 = "text2"

    params {
        param("Foo", "Bar")
    }
}
Run Code Online (Sandbox Code Playgroud)

s1m*_*nw1 9

这个结构被称为"带接收器的Lambda",又名"带接收器的函数文字",你可以在Kotlin DSL实现中广泛使用它.举个例子,看看HTML builder DSL.

我在这个帖子中详细描述了整个概念.