2017-10-12 13 views
5

मैं इस Kotlin वस्तु घोषणा पर देख रहा हूँ:"रिसीवर के साथ लैम्ब्डा": यह कोटलिन का निर्माण क्या है?

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

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

और मैं समझ नहीं क्या वर्ग बी के निर्माता के लिए तर्क है।

मैं उद्देश्यपूर्ण इस उदाहरण में जानकारी दूर निकाला है, लेकिन कक्षा बी वास्तव में

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

यह निर्माण "Lambda with Receiver", उर्फ ​​"समारोह रिसीवर के साथ शाब्दिक" है, जो आप Kotlin डीएसएल कार्यान्वयन में बड़े पैमाने पर इस्तेमाल पाएँगे कहा जाता है। उदाहरण के लिए, HTML builder DSL पर एक नज़र डालें।

मैंने पूरी अवधारणा को विस्तार से this धागे में वर्णित किया।

संबंधित मुद्दे