<
Kotlin 的 dsl(领域特定语言)
>
上一篇

Kotlin 的 成员引用 `::`
下一篇

Kotlin 多平台 expect actual

Kotlin DSL(领域特定语言)

例如在 build.gradle.kts 使用的就是一些 Kotlin DSL(领域特定语言)

plugins {}
android {
    defaultConfig {}
	buildTypes {
	    debug {}
	    release {}
	}
	buildFeatures {}
}
dependencies {}

Kotlin DSL 可以很方便简化或自定义一些函数的使用方式

基础语法

Kotlin DSL 通常结合以下几种特性来实现

代码示例

1. 创建 DSL 扩展函数

定义 DSL 扩展函数 button

fun Context.button(config: Button.() -> Unit): Button {
    return Button(this).apply {
        this.config()
    }
}

这里的接收者是 Button(接收者就是 Button.() 这里的调用者,即 Button,也可以理解为后面使用时的:作用域、上下文)

可以再定义一些扩展函数简化原来的函数,例如这个 click

fun View.click(listener: (View) -> Unit) {
    return this.setOnClickListener(listener)
}

2. 使用 DSL

在 Context 上下文中使用 button

button { // 这里的 this 是 Button 实例,即 DSL 的接收者
    text = "Click Me"
    click { 
        
    }
}
Top
Foot