“带接收器的Lambda”:这个Kotlin结构是什么?

“带接收器的Lambda”:这个Kotlin结构是什么?

问题描述:

我期待在此科特林对象声明:“带接收器的Lambda”:这个Kotlin结构是什么?

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

    params { 
     param("Foo", "Bar") 
    } 
}) 

而且我想不通的参数B类的构造函数是什么。

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

jetbrains.buildServer.configs.kotlin.v10.BuildType 

我无法找到该类型的文档。 I have found something that was close但它是一个接口的定义,因此没有构造函数。

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

{ 
    variableName1 = "text1" 
    variableName2 = "text2" 

    params { 
     param("Foo", "Bar") 
    } 
} 
+3

https://confluence.jetbrains.com/display/TCD10/Kotlin+DSL –

+1

@YoavSternberg这是我正在看,并感到困惑。我可能刚刚错过了这样一句话,即说这个参数是一个与接收器相关的函数。 – ZoSal

这种结构被称为"Lambda with Receiver",又名“函数文本与接收器”,您将在科特林DSL实现广泛使用找到。例如,看看HTML builder DSL

我在this线程中详细描述了整个概念。