grails - Grails 中的 Groovy 元类

标签 grails groovy

我在 Grails 中为 Map of Lists (其中 key 是一个 IntegervaluesList 的 map )添加了一个行为。如果 key 不存在,我将插入 Integer key 和一个 value 。但是如果 key 存在,我想将 values 连接为 List/而不是替换现有的 value

/**
* E.g.
*  [1: [123, 456, 789], [2: [987, 654, 321]]]
*/
LinkedHashMap.metaClass.multiPut << { key, value ->
    delegate[key] = delegate[key] ?: [];
    delegate[key] += value
}

我的问题是:
我应该把它放在 Grails 的什么地方? Bootstrap.groovy's init 或作为 AST Transformation (如果是,如何?)?

最佳答案

我个人会选择 Groovy 扩展模块。这些是在 Grails 初始化阶段加载的,因此几乎可以在应用程序生命周期内的任何时间使用。

更多关于这些扩展的信息可以在这里找到:http://mrhaki.blogspot.cz/2013/01/groovy-goodness-adding-extra-methods.html

根据此 Jira 票证,已将模块加载支持添加到 Grails:https://github.com/grails/grails-core/issues/1307

另一方面,我也没有看到使用 Bootstrap 有什么问题。

关于grails - Grails 中的 Groovy 元类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30912218/

相关文章:

grails - grails jasper插件和jquery插件与 Assets 管道冲突

testing - Grails 的集成测试报告在哪里?

grails - 条目创建中的域类约束

mysql - 在groovy中调用mysql存储过程

eclipse - STS 是否支持本地 Groovy 安装?

elasticsearch - Elasticsearch和Groovy脚本嵌套字段聚合匹配

grails - Grails Spring Security批注问题

grails - 升级后出现Grails groovy.lang.MissingMethodException

java - 如何读取共享位置上的文件/文件夹列表?

Groovy 隐式扩展点运算符