kotlinのforEach内でcontinueとbreakが使えない

kotlinでforEach内を書いてる時continueやbreakをしたい時

‘break’ and ‘continue’ are only allowed inside a loop(‘break’と ‘continue’はループ内でのみ許可されます)と言われ書けない

原因はfor文の中にブロックが入ってるからでした

public inline fun Array.forEach(action: (T) -> Unit): Unit { 
  for (element in this) action(element) 
}
val array = arrayOf("a", "b", "c")
for (element in array) {
  run {
    if (element != "b") {
      println(element)
    } else {
      continue
    }
  }
}

ということでそれ含めて書いてみました

val array = arrayOf("a", "b", "c")

array.forEach { it ->
  if (it != "b")
    println(it)
  else {
    return@forEach //continue
  }
  println("next")
}
run loop@ {
  array.forEach { it ->
    if (it != "b")
      println(it)
    else {
      return@loop //break
    }
    println("next")
  }
}

breakの方がネストが深くなってしまうのが少し嫌な感じですね

スポンサーリンク

シェアする

フォローする

スポンサーリンク