在这个例子中,我正在尝试一些简单的事情,但是我怎么会得到一个完全错误的结果.
至少对于我希望得到的东西.的xD
我希望得到:[6,5,6,5]
但相反,我得到:[黄油,面包,龙,表]
package test@Grab(group='org.codehaus.gpars',module='gpars',version='1.0.0')import static groovyx.gpars.GParsPool.withPoolclass Test { List<String> strings = new ArrayList<String>([ "butter","bread","dragon","table" ]) def closure = { it.length() } def doStuff() { def results = withPool( 4 ) { strings.eachParallel{ it.length()} } println results } static main(args) { def test = new test() test.doStuff() }}
如果答案可以有一个简短的解释,那将是很好的.
非常感谢!
你想要的是收集(通过调用闭包返回新的集合)
所以,改变
strings.eachParallel { it.length() }
至
strings.collectParallel { it.length() }
(顺便说一句)
GPars现在捆绑了Groovy所以你不需要@Grab,我假设你打算在collect中使用你的闭包变量?
package testimport static groovyx.gpars.GParsPool.withPoolclass Test { List<String> strings = [ "butter","table" ] def closure = { it.length() } def doStuff() { def results = withPool( 4 ) { strings.collectParallel closure } println results } static main( args ) { def test = new test() test.doStuff() }}总结
以上是内存溢出为你收集整理的groovy – GPars:返回每个并行{}全部内容,希望文章能够帮你解决groovy – GPars:返回每个并行{}所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)