深色模式
Kotlin DSL 写法
原理
DSL 的原理,是Kotlin的 trailing lambdas(拖尾 lambda)。
定义 DSL
假设要定义一个执行任务的类,并提供回调:
kotlin
class SomeWork {
var onSuccess: (() -> Unit)? = null
fun onSuccess(block: () -> Unit) {
onSuccess = block
}
var onFail: (() -> Unit)? = null
fun onFail(block: () -> Unit) {
onFail = block
}
fun start() {
if (true) {
onSuccess?.invoke()
} else {
onFail?.invoke()
}
}
}
fun SomeWork(block: SomeWork.() -> Unit): SomeWork {
val work = SomeWork()
work.apply(block)
return work
}
使用
创建对象,并设置回调:
kotlin
val work = SomeWork {
onSuccess {
print("onSuccess")
}
onFail {
print("onFail")
}
}
work.start()