我想更明确地说明我关于它们的参数类型的闭包。所以我会写类似
List<Y> myCollect(List<X> list, Closure<X,Y> clos) { ... }
我知道 Groovy 不会使用该类型信息,但 Groovy++ 可能会在编译时使用它。这可以实现吗(除了将其放入评论中)?
更新:标题听起来可能会产生误导,但我认为上面的例子会更清楚。我有兴趣指定闭包的类型,它是某个函数的参数。假设,我想重新定义内置的collect
. 所以我对写作感兴趣myCollect
,而不是写作clos
。我想要实现的是获得编译时错误
myCollect(['a', 'ab'], { it / 2 }) // compile error
myCollect(['a', 'ab'], { it.size() }) // OK