【问题标题】:Grails/Groovy: Understanding the parameters of the closure codeGrails/Groovy:理解闭包代码的参数
【发布时间】:2015-07-26 19:21:55
【问题描述】:

我是 Grails/Groovy 的新手,所以请耐心等待我尝试理解我在书中遇到的一段代码。

这是一个简单的相册域类:

class Album {
    String artist
    String title
    List songs = []
    List durations = []


    static constraints = {
        artist blank: false
        title blank: false
        songs minSize:1, validator:{ val, obj ->
            if(val.size() != obj.durations.size())
                return "songs.durations.not.equal.size"
    }
}  

我的问题来自代码的约束属性块。
在验证器约束中,作者使用了闭包。
但究竟什么是“val”和“obj”?他们将被赋予什么价值?

另外,还有一个额外的问题,“约束”是什么类型的?我不认为这是一张地图,因为它们在 Groovy 中被定义为 [ ]。从 Java 的角度来看,x = { .. } 是一个数组,但我不确定它在 Groovy 中是否相同。

感谢您的帮助!

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    您的第一个问题,valobj 参数分别指的是属性的值和指向实例的指针。用于自定义验证例程的 documentation 对此进行了更详细的说明。

    至于奖金问题constraints 是一个Groovy closure

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      相关资源
      最近更新 更多