groovy – GPars:返回每个并行{}

groovy – GPars:返回每个并行{},第1张

概述我想用这些示例字符串中的每一个做很多东西,并在这里返回一些其他类型的Object Integers,稍后是一些更大的类对象. 在这个例子中,我正在尝试一些简单的事情,但是我怎么会得到一个完全错误的结果. 至少对于我希望得到的东西.的xD 我希望得到:[6,5,6,5] 但相反,我得到:[黄油,面包,龙,表] package test@Grab(group='org.codehaus.gpars 我想用这些示例字符串中的每一个做很多东西,并在这里返回一些其他类型的Object Integers,稍后是一些更大的类对象.

在这个例子中,我正在尝试一些简单的事情,但是我怎么会得到一个完全错误的结果.
至少对于我希望得到的东西.的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()    }}

如果答案可以有一个简短的解释,那将是很好的.
非常感谢!

解决方法 在groovy中,每个(和GPars中的eachParallel)都返回原始集合.

你想要的是收集(通过调用闭包返回新的集合)

所以,改变

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:返回每个并行{}所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存