내 DSL의 규칙에 '활성'플래그를 구현하고 싶습니다.Groovy DSL : 클로저의 속성 설정
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
}
}
다음
Shipping("Standard") {
active: true
description: "some text"
rules {
... define rules here
}
}
나는 다음과 같은 몇 가지 튜토리얼을 실행하는 모든 것을 가지고 방법은 다음과 같습니다 여기에 내가 그것을 같이하고 싶었 방법 어떻게 '활성'또는 '설명'에 액세스 할 수 있습니까?
어쨌든이 구문은 실제로 무엇을합니까? 맵 할당과 같지만 아무 것도 없습니다. 아니면 그루비 컴파일러가 불완전한 삼항 연산자로 취급합니까?
감사합니다. ExpandoMetaClass를 사용하여 전역 함수를 스크립트의 환경에 연결하는 것에 대해서만 알고 있었지만이 추상 클래스 확장은 훨씬 더 쉽고 이해하기 쉽습니다. – NagyI