【问题标题】:How to define a @CompileStatic compatible closure in Groovy?如何在 Groovy 中定义 @CompileStatic 兼容闭包?
【发布时间】:2013-03-03 15:42:29
【问题描述】:

我有一个定义为闭包的类:

void everyPixel( closure ){
    for( def x : 0..width-1 )
        for( def y : 0..height-1 )
            closure( x, y )
}

但是如果我对它应用 @CompileStatic 注释,它就不会编译(在我添加闭包之前它会编译),并带有以下消息:

Groovyc:[静态类型检查] - 找不到匹配的方法 java.lang.Object#call(java.lang.Integer, java.lang.Integer)。请检查声明的类型是否正确,方法是否存在。

如何为此创建类型签名以便静态编译?到目前为止,我在 Google 上的所有点击都说 如何 传递一个闭包,而不是如何定义一个接受一个闭包的方法。 :-/

【问题讨论】:

    标签: groovy closures groovy++


    【解决方案1】:

    你只需要告诉它closureClosure

    void everyPixel( Closure closure ){
      for( x in 0..<width )
        for( y in 0..<height )
          closure( x, y )
    }
    

    【讨论】:

      猜你喜欢
      • 2018-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 2017-12-30
      • 2021-03-19
      • 1970-01-01
      相关资源
      最近更新 更多