gpt4 book ai didi

groovy - GPars:返回eachParallel{}

转载 作者:行者123 更新时间:2023-12-02 02:39:22 24 4
gpt4 key购买 nike

我想对每个示例字符串做很多事情,并在此处返回一些其他类型的对象(整数),稍后返回一些更大的类对象。

在这个例子中,我正在尝试一些简单的事情,但我得到了完全错误的结果。至少对于我希望得到的东西。 xD

我希望得到:[6, 5, 6, 5]但我得到的是:[黄油,面包,龙, table ]

package test

@Grab(group='org.codehaus.gpars', module='gpars', version='1.0.0')
import static groovyx.gpars.GParsPool.withPool

class 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 中,each(以及 GPars 中的 eachParallel)返回原始集合。

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

所以,改变

        strings.eachParallel { it.length() }

        strings.collectParallel { it.length() }

(顺便说一句)

GPars 现在与 Groovy 捆绑在一起,因此您不需要 @Grab,并且我假设您打算在 collect< 中使用 closure 变量

package test

import static groovyx.gpars.GParsPool.withPool

class Test {
List<String> strings = [ "butter", "bread", "dragon", "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:返回eachParallel{},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15498446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com