Thread: Re[2]: [Ficl-developers] Here's a 'switch' implementation for FICL
Brought to you by:
jsadler
From: David M. <da...@re...> - 2001-11-28 22:29:13
|
Hi john, js> I _do_ like it. A couple things I'd like to try to improve: js> 1. As implemented, all conditionals are executed for every pass through the js> switch, even if js> one matches early. I think I can add a simple trick that gets around that js> problem. Not too severe a problem, because: 1) The conditionals are getting executed, but the user code between each 'case'...'break' pair is not executed unless there's a match. So the implementation as it stands is working fine. 2) As it is, it would not be noticeably slower than a chain of 'if...endif' or 'if...else...endif' statements that people would have to use if 'switch' isn't available. 3) I'd advise against any strategy which executes the user code inside a matching conditional then jumps to the end of the switch. Even 'C' doesn't do that. Example: variable var1 variable var2 variable n ... [some calculations which alter var1, var2 and/or n] n @ switch 0 case some user code break 1 case some user code break var1 @ case some user code break var2 @ case some user code break endswitch As you can see from this example, a programmer may deliberately want case statements which are not mutually exclusive, which is accepted practice in 'C'. If you implement a dropout at the end of executing a matching case, the code will fail. If you want to implement mutual exclusivity (can be desirable for speed reasons), I'd advise a separate word, say, 'switch-ex'. David |