Kotlinには、forEach
またはのような非常に優れた反復関数repeat
がありますが、break
and continue
演算子でそれらを操作することはできません(ローカルと非ローカルの両方)。
repeat(5) {
break
}
(1..5).forEach {
continue@forEach
}
目標は、関数構文を通常のループにできるだけ近づけることです。一部の古いバージョンのKotlinではそれは間違いなく可能でしたが、構文を再現するのに苦労しています。
問題はラベル(M12)のバグかもしれませんが、最初の例はとにかく動作するはずです。
特別なトリック/注釈についてどこかで読んだようですが、この件に関する参照を見つけることができませんでした。次のようになります。
public inline fun repeat(times: Int, @loop body: (Int) -> Unit) {
for (index in 0..times - 1) {
body(index)
}
}
break
そのcontinue
ループについてのみ尋ねているのか、それともまったく同じことをする別の答えを探しているのかを明確にすることができます。前者は後者を拒否したため、そうであるように思われます。
continue@label
し、break@label
機能)、関連する質問を参照してください。stackoverflow.com/questions/34642868/...