3 ms·
Hmmm replacing if/else statements with a map/dictionary with pointers to either data or functions. A little off topic here but how do you propose to do this? As
by jamongkad 18y ago
Hmmm replacing if/else statements with a map/dictionary with pointers to either data or functions. A little off topic here but how do you propose to do this? Assuming we know what polymorphism is. Your map/dictionary style is quite interesting.
- orib 18y agoParse tables or regex compiling are a perfect example of this style. Lookup tables are another good example.
- etal 18y agoFor languages with first-class functions, it looks like this: # Algorithms def double(x): return x*2 def square(x): return x*x def fact(x): return (x*fact(x-1) if x > 1 else 1) # Data choices = { 'A': double, 'B': square, 'C': fact } # I/O choice = raw_input('Choose A, B or C: ') x = input('Enter a number: ') if choice in choices: print choices[choice](x) else: print 'Initiating self-destruct sequence.' It's actually similar to how a switch block works, if each case in the switch statement just calls a function or evaluates one expression. Also worthwhile: Instead of functions, let the dictionary values be lists of arguments for another (multi-argument) function. Then the lookup is like choosing from a set of possible configurations for that function. A little redundancy is OK, since the table is so easy to read and edit.