gpt4 book ai didi

kotlin - 如何跳出 Kotlin `repeat` 循环?

转载 作者:行者123 更新时间:2023-12-04 12:28:54 35 4
gpt4 key购买 nike

我如何摆脱 Kotlin repeat环形?
(我看到很多关于 forEach 的答案,但我想看到一个 repeat 特定的答案。)

  • 你不能用裸体 return ,因为这将从包含 repeat 的内容返回.
  • 您不能使用 break , 因为:
  • 如果repeat在一个循环内,您将打破该循环
  • 如果repeat不在循环中,你会得到 'break' and 'continue' are only allowed inside a loop


  • 这些不起作用(它们在功能上是相同的):
        repeat(5) { idx ->
    println(">> $idx")
    if(idx >= 2)
    return@repeat // use implicit label
    }

    repeat(5) @foo{ idx ->
    println(">> $idx")
    if(idx >= 2)
    return@foo // use explicit label
    }

    在这两种情况下,您都会得到:
    >> 0
    >> 1
    >> 2
    >> 3
    >> 4
    (这两个块中的 return@ 实际上就像一个 continue ,如果在 if 块之后添加 println 你可以看到自己。)
    那么我怎样才能摆脱 repeat ?

    最佳答案

    原来repeat (以及 forEach )实际上不是循环。它们是高阶函数,也就是说,它们是以函数为参数的函数。
    (我觉得这令人沮丧:它们的外观和行为都像循环,并且在 Kotlin 文档中占有突出地位。为什么不一路将它们提升为语言中的正确循环呢?)
    突破一个repeat循环,这是我能想到的最佳答案:

        run repeatBlock@ { // need to make a label outside of the repeat!
    repeat(20) { idx ->
    println(">> $idx")
    if(idx >= 2)
    return@repeatBlock
    }
    }
    这是这样做的结果:
    >> 0
    >> 1
    >> 2
    我希望我可以在不引入新缩进级别的情况下做到这一点,但我认为这是不可能的。

    关于kotlin - 如何跳出 Kotlin `repeat` 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68277152/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com