我想更清楚地了解我的关于他们的参数类型的闭包。所以,我喜欢写东西Groovy中输入参数的关闭
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
在类型Closure中,V表示闭包的返回值,而不是其参数。因此,由于无法返回两个值,因此设置Closure 是没有意义的。 –
2013-07-26 01:16:09
我的意思是'Closure'接受一个'X'作为输入并返回'Y'。所以它可以应用于'List '的项目。我更新了函数的返回类型。 –
2013-07-26 08:57:44