jenkins - 如何处理管道中groovy代码中的闭包范围
问题描述
我有一个名为“runTest”的方法,它负责在管道中运行某些测试,我还有另一个名为“chooseTest”的方法,它负责解析参数并将这些测试附加到地图中。在“chooseTest”方法中,我还有 switch-case 来检查需要在地图中附加哪些测试。我将如何使用闭包在该开关案例中调用“runTest”方法,以便在我跳出循环后调用它(用于检查每个测试)。
我曾尝试让“runTest”本身成为一个闭包,但我遇到了“方法太长错误”,这让调试很头疼,所以我尝试在每个 if 语句案例中创建一个闭包变量。我遇到了范围界定问题,它不允许我在 for 循环之外运行这些闭包调用。我在下面附上了我的方法示例
// INSIDE of chooseTest method-->
switch (testName){
case 'aTest':
def runATest = {runTest('aTest')}
break
case 'bTest':
def runBTest = {runTest('bTest')}
break
}
runAtest.call()
//This is where I ran into scoping issue
//Another approach I tried (saw this approach elsewhere, not sure if this is even the correct approach syntactically)
def runTests = []
switch (testName){
case 'aTest':
runTests << {-> runTest('aTest')}
break
case 'bTest':
runTests << {-> runTest('bTest')}
break
}
runTests.each
我希望闭包没有范围错误,当我在 case 语句之外调用它时,它会调用 chooseTest 方法。
解决方案
好吧,我是个菜鸟,我可以这样定义。
def runAtest
switch(test){
case 'atest':
runAtest = {print('you a noob')}
break
}
推荐阅读
- javascript - 复制
在 Vue.js 应用程序上将内容标记到剪贴板
- python - Python:Subprocess.popen stdout:不在实时缓冲区中
- python - 如何在 Python Pandas 中使用特定条件合并两个 DataFrame?
- mongodb - MongoDB 自动更新文档以匹配模式
- c# - LDAP 查询未返回所有查询的属性
- google-api-python-client - 在 dialogflow cx 中将声音更改为女性
- algorithm - 连续图像上的生长区域算法
- python - 如何设置 x 轴的特定范围并增加绘图的长度?
- c# - 在 C# windows 窗体中的树视图中面临问题,详细信息如下:
- ios - iphone模拟器缺少构建产品反应原生