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()
ShippingDelegate は単純です。
class ShippingDelegate {
String name
void rules(Closure cl) {
... do stuff here
}
}
すべて問題なく動作しますが、「アクティブ」または「説明」にアクセスするにはどうすればよいですか?
とにかく、この構文は実際に何をしますか? マップ割り当てのように見えますが、何もありません。それとも、Groovy コンパイラはそれを不完全な三項演算子として扱いますか?