gpt4 book ai didi

grails - IntelliJ 中使用 GroovyDSL 进行动态方法定义

转载 作者:行者123 更新时间:2023-12-02 11:43:08 26 4
gpt4 key购买 nike

我试图使用 IntelliJ 中的 GroovyDSL 脚本功能定义动态方法。入门指南"Scripting IDE for DSL awareness"为您提供有关如何开始使用此功能的好主意。虽然我的 DSL 中的动态方法定义比示例更复杂,但我不太确定如何构建它。你可以想象它的工作方式像 dynamic finder methods在 Grails 中,除了您可以按任意顺序将任意数量的条件与 bool And 关键字组合起来。所有关键字均未在我调用该方法的类中定义,但可以在 GDSL 文件中定义。该方法始终以 submitTransactionWith 开头。这是一个例子:

clientDSL.submitTransactionWithCriteria1AndCriteria2AndCriteria3(arg1, arg2, arg3)

我一开始就这样做,但这只适用于一个条件,并且没有考虑到您可以按任意顺序组合多个条件。

def ctx = context(ctype: "my.client.ClientDSL")

contributor(ctx) {
['Criteria1', 'Criteria2', 'Criteria3'].each {
method name: "submitTransactionWith${it}",
type: 'java.util.Map',
params: [args: 'java.util.Collection']
}
}

我想知道是否有对这种动态方法的特殊支持。我还对如何在 IntelliJ 内部对 Grails 的 DSL 进行建模感兴趣。

最佳答案

Grails DSL 位于 ${idea.home}/plugins/GrailsGriffon/lib/standardDsls

这可能会帮助您解决问题。他们提前创建所有方法名称组合的字符串数组,然后在其贡献者中迭代它们,创建使用名称字符串数组的方法。

关于grails - IntelliJ 中使用 GroovyDSL 进行动态方法定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com