lua-users home
lua-l archive

Re: continue keyword - since there is goto now, maybe reconsider continue?

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


It was thus said that the Great Jonas Thiem once stated:
> Since there is now a working goto in Lua, I suppose there is no longer
> any technical reason why there is no continue.
> 
> In case that's true, I would like to point out that goto as a
> continue-replacement isn't very nice:
> 
> It needs twice the lines (goto statement + label), and you need to
> make up a unique jump label per loop if you got multiple loops in a
> function with such a continue workaround.
> 
> Also, you can easily mix up your jump labels and suddenly jump into
> one of the other loops and generate non-obvious, huge bugs with that.
> 
> What about natively supporting continue in an upcoming Lua version? I
> would be using it a lot, I do in all other programming languages which
> usually have it.
 Just an observation, but ...
 Since Lua has tail call optimization, you could always implement a loop
with a "continue" statement as:
	function only_process_lines_starting_with_dollar_sign(input)
	 local line = input:read("*l")
	 
	 if line == nil then
	 return
	 end
	 if not line:match("^%$") then
	 -- continue, skipping the current line
	 return only_process_lines_starting_with_dollar_sign(input)
	 end
	 -- some processing
	 if some_condition_we_want_to_skip_this_line(line)
	 return only_process_lines_starting_with_dollar_sign(input)
	 end
	 return only_process_lines_starting_with_dollar_sign(input)
	end
 -spc (Oddly, I've found I don't really miss continue in Lua ... )

AltStyle によって変換されたページ (->オリジナル) /