我正在使用Groovy类别(categories)进行DSL开发,希望找到一种方法可以在Groovy Shell中使用我的DSL,而不需要为每个命令显式地编写use(MyCategory){ myObject.doSomething() }
。
例如,假设我有以下玩具类别:
class MyCategory {
static Integer plus(Integer integer, String string){
return integer + Integer.valueOf(string)
}
}
接着,我可以在 groovysh
中按如下方式使用这个类别:
groovy> use(MyCategory){ 2 + '3' } //gives 5
那么,有没有办法为所有groovysh
命令全局设置MyCategory
,这样每次都不需要用use(MyCategory) { ... }
包装我的命令呢?例如:
groovy> useGlobally(MyCategory); //call something like this only once
groovy> 2 + '3' //automatically uses MyCategory and gives 5
MyCategory
包含许多不同类的覆盖,那么我需要手动为每个类指定mixin
(例如Integer
)。有没有自动执行此操作的方法? - Stanislav Poslavsky