Elegant way for do … while in groovy

前端 未结 6 827
Happy的楠姐
Happy的楠姐 2020-12-29 00:44

How to do code something like this in groovy?

do {

  x.doIt()

} while (!x.isFinished())

Because there is no do ... w

6条回答
  •  悲&欢浪女
    2020-12-29 01:34

    You can roll your own looping that's almost what you want. Here's an example with loop { code } until { condition } You can't have a corresponding loop { code } while { condition } because while is a keyword. But you could call it something else.

    Anyway here's some rough and ready code for loop until. One gotcha is you need to use braces for the until condition to make it a closure. There may well be other issues with it.

    class Looper {
       private Closure code
    
       static Looper loop( Closure code ) {
          new Looper(code:code)
       }
    
       void until( Closure test ) {
          code()
          while (!test()) {
             code()
          }
       }
    }
    

    Usage:

    import static Looper.*
    
    int i = 0
    loop {
       println("Looping : "  + i)
       i += 1
    } until { i == 5 }
    

提交回复
热议问题