2017-10-12 13 views
5

私はこの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しかし、それはインタフェースの定義なので、コンストラクタはありません。

要約すると、これはコトルの次の構成要素ですか?

{ 
    variableName1 = "text1" 
    variableName2 = "text2" 

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

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

+1

@YoavSternbergこれは私が見ているものであり、困惑しています。私は引数が受信機の関数リテラルであると言ったフレーズを見逃したかもしれません。 – ZoSal

答えて

8

この構築物を使用すると、広範囲にKotlinのDSLの実装に使用見つけるれ、別名「レシーバーとの関数リテラル」、"Lambda with Receiver"と呼ばれています。たとえば、HTML builder DSLをご覧ください。

私は全体の考え方をthisスレッドで詳しく説明しました。

関連する問題