dispatk
Description
This function is inspired by singledispatch of Python 3.4+ (PEP 443), but the dispatch happens on the key extracted fro the arguments values.
from dispatk import dispatk
@dispatk(lambda n: int(n))
def fib(n):
return fib(n-1) + fib(n-2)
@fib.register(0)
def _(n):
return 0
@fib.register(1, 2)
def _(n):
return 1
@fib.register(41)
def _(n):
return 165580141
register accepts one or more keys, so
@fib.register(1, 2)
def _(n):
return 1
is equivalent to
@fib.register(1)
@fib.register(2)
def _(n):
return 1