相关疑难解决方法(0)

Kotlin - 限制扩展方法范围

有没有办法限制DSL中的扩展方法?

假设我有这样的类结构:

class Outer {
    fun middle(op: Middle.() -> Unit): Middle {
        val middle = Middle()
        middle.op()
        return middle
    }
}

class Middle {
    fun inner(op: Inner.() -> Unit): Inner {
        val inner = Inner()
        inner.op()
        return inner
    }
}

class Inner

fun outer(op: Outer.() -> Unit): Outer {
    val outer = Outer()
    outer.op()
    return outer
}
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样创建一个调用:

outer {
    middle {
        inner {
            middle { }  // Here is the problem
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,显着的middle { }呼叫是混乱的,因为它增加了一个 …

dsl scope kotlin

4
推荐指数
1
解决办法
454
查看次数

标签 统计

dsl ×1

kotlin ×1

scope ×1