Kotlin拥有非常好的迭代函数,例如forEach
或repeat
,但我无法让break
和continue
操作符在它们上面工作(包括本地和非本地):
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
目标是尽可能地使用函数式语法来模拟常规循环。在 Kotlin 的一些旧版本中肯定是可行的,但我很难复制这种语法。
问题可能是标签 (M12) 的一个 bug,但我认为第一个示例应该仍然可以工作。
我记得在某个地方读到过一个特殊的技巧/注释,但我找不到任何有关此主题的参考资料。可能看起来像以下内容:
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
continue@label
和break@label
功能时),请参见相关问题:https://dev59.com/sVsW5IYBdhLWcg3wuZRy - Jayson Minardbreak
和continue
,还是正在寻找完全相同的替代方案。前者似乎是正确的,因为您已经拒绝了后者。 - Jayson Minard