35 lines
691 B
Python
35 lines
691 B
Python
# Because Python has first-class functions they can
|
||
# be used to emulate switch/case statements
|
||
|
||
def dispatch_if(operator, x, y):
|
||
if operator == 'add':
|
||
return x + y
|
||
elif operator == 'sub':
|
||
return x - y
|
||
elif operator == 'mul':
|
||
return x * y
|
||
elif operator == 'div':
|
||
return x / y
|
||
else:
|
||
return None
|
||
|
||
# with a dict factory
|
||
|
||
def dispatch_dict(operator, x, y):
|
||
return {
|
||
'add': lambda: x + y,
|
||
'sub': lambda: x - y,
|
||
'mul': lambda: x * y,
|
||
'div': lambda: x / y,
|
||
}.get(operator, lambda: None)()
|
||
|
||
|
||
>>> dispatch_if('mul', 2, 8)
|
||
16
|
||
|
||
>>> dispatch_dict('mul', 2, 8)
|
||
16
|
||
|
||
>>> dispatch_if('unknown', 2, 8)
|
||
None
|