【发布时间】:2018-01-27 16:52:36
【问题描述】:
创建了一个测试用例来尝试并代表我正在尝试做的事情。我不知道如何“停止”继续在匿名函数内部工作。在下面的示例中,如果答案正确,我想跳出“苹果”部分。下面的代码无法编译,因为它说 return@apple 而不是 return@banana 这是唯一有效的选项,但我在下面写它是为了解释我想要实现的目标并更好地理解如何去做类似的事情这个。
class FunctionBreakingTest {
@Test fun stopInMiddleOfLambda() {
var answer = "wrong"
doStuff apple@ {
doStuff banana@ {
answer = "correct"
if (answer == "correct") {
return@apple
}
answer = "wrong"
}
answer = "wrong"
}
assertEquals("correct", answer)
}
private fun doStuff(foo: () -> Unit) = foo.invoke()
}
【问题讨论】: