Groovy "each"클로저에서 벗어날 수 있습니까?


Answers

루프를 임의의 잠금 장치로 교체하십시오.

def list = [1, 2, 3, 4, 5]
list.any { element ->
    if (element == 2)
        return // continue

    println element

    if (element == 3)
        return true // break
}

산출

1
3
Question

Groovy. .each{Closure} 에서 break 할 수 있습니까, 아니면 대신 고전적인 루프를 사용해야합니까?




RETURN 중단 할 수 있습니다. 예를 들어

  def a = [1, 2, 3, 4, 5, 6, 7]
  def ret = 0
  a.each {def n ->
    if (n > 5) {
      ret = n
      return ret
    }
  }

그것은 나를 위해 일합니다!




그냥 특별 폐쇄를 사용하여

// declare and implement:
def eachWithBreak = { list, Closure c ->
  boolean bBreak = false
  list.each() { it ->
     if (bBreak) return
     bBreak = c(it)
  }
}

def list = [1,2,3,4,5,6]
eachWithBreak list, { it ->
  if (it > 3) return true // break 'eachWithBreak'
  println it
  return false // next it
}



Links