asincero <[EMAIL PROTECTED]> writes:

> def foo():
>    def doCase1():
>       pass
>    def doCase2():
>       pass
>    def doCase3():
>       pass
>    def doCase4():
>       pass
>    def doCase5():
>       pass
>
>    handle_case = {}
>    handle_case[1] = doCase1()
>    handle_case[2] = doCase2()
>    handle_case[3] = doCase3()
>    handle_case[4] = doCase4()
>    handle_case[5] = doCase5()
>    handle_case[c]()

(The above code is wrong. You want the dictionary to map to functions,
not to the result of calling those functions; the call to the function
comes later.)

Why not construct the dictionary in one step? ::

    handle_case = {
        1: do_case_1,
        2: do_case_2,
        3: do_case_3,
        4: do_case_4,
        5: do_case_5,
    }
    handle_case[c]()

You could even perform the lookup and function call in the same
statement as creating the dictionary, but I prefer the above form for
its readability.

> Note that in this situation using OO polymorphism instead of a switch-
> like construct wouldn't be applicable, or at least I can't see how it
> could be.

I'm not sure what you mean. What would you apply polymorphism to, and
what would be the desired result?

-- 
 \        "I used to work in a fire hydrant factory. You couldn't park |
  `\                       anywhere near the place."  -- Steven Wright |
_o__)                                                                  |
Ben Finney
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to