lua-users home
lua-l archive

Re: Desired Lua Features

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


It was thus said that the Great KHMan once stated:
> 
> I think certain thinking processes when coding translates well to 
> a switch/case kind of construct, but it doesn't happen often 
> (well, depends). When it happens, the coder stops and asks, why 
> can't I use switch/case here?
 I'm going through my C code, looking at the various switch statments, and
a few things jump out to me. One, most of them are to handle a sequence of
values (usually an enum) that in most cases, a jump table can easily handle. 
Two, state machines, whehter in parsing text or handling network protocols. 
And occasionally to avoid the ugliness of an if/elseif chain.
 The first case is handled well with a Lua table (I've rarely missed this
variant in Lua), and the second one I usually replace with functions using
TCO (each function handles a state) or LPeg (for the parsing tasks). That
leaves the last case, which again, can be done in Lua with a table. 
Granted, there is a bit of clumsiness when it comes to using tables for
this, so I can see the desire for some syntax.
 As far as fallthrough though,, that is *so* rare in my code as it's not a
consideration for me. I *have* used fallthrough, but generally it's only
when parsing the command line:
	switch(argc)
	{
	 case 3: /* we have a baz!, process and fall thorugh */
	 case 2: /* we have a bar!, process and fall through */
	 case 1: /* we have a foo!, process */
	 break;
	 default: /* we got nothing! Defaults or error, depending */
	}
I'm trying to think when else I did that, and while I'm sure I *have*,
nothing comes to mind immediately.
 That said, I was reminded of this article:
	http://prog21.dadgum.com/166.html [1]
 -spc
[1]	Check the archives for there is a lot of good material here. Lots
	of food for thought.

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