我有一个名为"runTest"的方法,它负责在管道中运行某些测试,我有另一个名为"chooseTest"的方法,它负责解析参数并将这些测试附加到映射中。在"选择测试"方法中,我也有开关案例,用于检查需要在映射中附加哪个测试。我将如何使用闭包在该开关情况下调用"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
}