我想在我的 DSL 中执行一条规则的动态旗帜。 这里我要它看起来像:
Shipping("Standard") {
active: true
description: "some text"
rules {
... define rules here
}
}
我如何让一切沿着几个教程运行:
Script dslScript = new GroovyShell().parse(new File("Standard"))
dslScript.metaClass.Shipping = { String name, Closure cl ->
ShippingDelegate delegate = new ShippingDelegate()
delegate.name = name
cl.delegate = delegate
cl.setResolveStrategy Closure.DELEGATE_FIRST
cl()
}
dslScript.run()
航运门户简单明了:
class ShippingDelegate {
String name
void rules(Closure cl) {
... do stuff here
}
}
一切顺利,没有抱怨, 但我如何能进入活动或描述?
这个语法实际上会做什么? 它看起来像一个地图任务,但没有。 或者说, 精巧的编译者会把它当作一个不完整的永久操作员吗?