groovy 如何在没有首先赋值给变量的情况下调用shell.parse()上的函数?例如shell.parse().someFunction()

m0rkklqb  于 2022-11-01  发布在  Shell
关注(0)|答案(1)|浏览(118)

现在我正在做的是:

//main.groovy
def func = shell.parse( new File('func.groovy') )
func.someMethod('sdfsdfsdfsdf')

//func.groovy
def someMethod(deploymentFolder) {
    return deploymentFolder
}

我想把main.groovy中的代码片段变成一行程序,但这样做不起作用:

def func = shell.parse( new File('func.groovy') ).someMethod('sdfsdfsdf')

这也不管用:

def func = shell.parse( new File('func.groovy') ) someMethod('sdfsdfsdf')

有没有一种方法可以直接调用shell.parse返回的函数?

编辑

我打了对方付费电话这似乎改变了一些事情
所以这是行不通的:

list = arrList.collect { file ->
    return shell.parse( new File(file) ).someMethod('sdfsdfsdf')
}

someMethod()返回一个arrayList. after collect虽然list看起来包含正确数量的嵌套列表,但它们都是null。
然而,这样做实际上是有效的:

myarr = []
list = arrList.collect { file ->
    tempVar = shell.parse( new File(file) )
    myarr += tempVar.someMethod('sdfsdfsdf')
}

我不确定有什么不同。我以为collect会做同样的事情。它看起来 * 几乎 * 做同样的事情,但是它连接的列表都是空的。

cl25kdpy

cl25kdpy1#

你的第一次尝试是正确的,工作的怀疑:

def shell = new GroovyShell()
println(["func.groovy"].collect{ it as File }.collect{ shell.parse(it).someMethod('sdfsdfsdfsdf') })
// ⇒ [sdfsdfsdfsdf]

相关问题