我有一个名为“ runTest”的方法,它负责在管道中运行某些测试,还有另一个名为“ chooseTest”的方法,该方法负责解析参数并将这些测试附加到地图中。在“ chooseTest”方法中,我还具有切换用例,用于检查需要在映射中附加哪个测试。在那种切换情况下,如何使用闭包调用“ runTest”方法,以便在退出循环后(用于检查每个测试)可以调用它。
我曾尝试将“ runTest”本身设置为闭包,但是遇到了“ Method too long error”(方法太长错误),调试起来很麻烦,因此我尝试在每种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语句之外调用它时,它将调用choiceTest方法。
答案 0 :(得分:1)
我真是个菜鸟,我可以这样定义。
def runAtest
switch(test){
case 'atest':
runAtest = {print('you a noob')}
break
}