有没有办法限制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 { }
呼叫是混乱的,因为它增加了一个 …