lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Sun, Jan 23, 2011 at 09:18:45PM +0200, Shmuel Zeigerman wrote:
> 
> And what if `continue' is needed from within deeply nested blocks? Even 
> with depth of 2 (as in an example below) there's no simple replacement 
> to it.
> 
> while condition do
>    -- some code
>    if test1 then
>      -- more code
>      if test2 then
>        continue
>      end
>      -- more code
>    end
>    -- more code
> end
> 
Well, the obfuscated solution involving repeat until false could be 
defended on the grounds that it is an idiom, I suppose.  But actually
the moment it gets that complicated, I prefer:

function task_description_saving_a_comment()
  if test1 then
    -- more code
    if test2 then
      return
    end
    -- more code
  end
end    

while condition do
  task_description_saving_a_comment()
  end

If you need break and continue in the same loop, the function
could return true or false.

Dirk