DSLの拡張メソッドを制限する方法はありますか?Kotlin - 拡張メソッドのスコープを制限する
は、私はこのようなクラス構造を持っていると言う:
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
}
ので、同様に、私は、呼び出しを作成することができます。
outer {
middle {
inner {
middle { } // Here is the problem
}
}
}
私の問題は、それが追加としてマークされmiddle { }
呼び出しは、混乱を招くということですMiddle
からに変更すると、Inner
に追加されているように見えます。
middle { }
コールを許可しない方法はありますか。
これは現時点では不可能ですが、https://youtrack.jetbrains.com/issue/KT-11551 –