DSL中的隐式接收器范围控制

@DslMarker注解允许限制外层接受器的范围。考虑以下例子:

table {
    tr {
        td { +"Text" }
    }
}

在Kotlin 1.0中,被传递给td的lambda表达式可以访问三个隐式的接收器:传递给table的接收器、传递给tr和td的接收器。这样允许你在上下文环境无相关的情况下调用相关方法。比如在td中调用tr,因此添加一个tr标签到td。

在Kotlin 1.1中,你可以做相关限制,以至于只有定义隐式接收器的td的相关方法才可以被执行。使用@DslMarker美剧并且将其应用到标签类的基类中。

results matching ""

    No results matching ""