FunctionChain#
A function chain implements a compile-time observer pattern that allows a module to call back into dependent modules in a decoupled way.
See following example:
using import FunctionChain # declare new function chain fnchain activate fn handler (x) print "handler activated with argument" x 'append activate handler 'append activate fn (x) print "last handler activated with argument" x 'prepend activate fn (x) print "first handler activated with argument" x activate 1 activate 2 'clear activate 'append activate handler activate 3
Running this program will output:
first handler activated with argument 1 handler activated with argument 1 last handler activated with argument 1 first handler activated with argument 2 handler activated with argument 2 last handler activated with argument 2 handler activated with argument 3
- type
FunctionChain
-
A plain type of storage type
(opaque@ _type)
.- spice
__call
( ... ) - inline
__repr
( self ) - spice
__typecall
( ... ) - inline
append
( self f ) -
Append function
f
to function chain. When the function chain is called,f
will be called last. The return value off
will be ignored. - inline
clear
( self ) -
Clear the function chain. When the function chain is applied next, no functions will be called.
- inline
on
( self ) -
Returns a decorator that appends the provided function to the function chain.
- inline
prepend
( self f ) -
Prepend function
f
to function chain. When the function chain is called,f
will be called first. The return value off
will be ignored.
- spice
- sugar (
decorate-fnchain
... ) - sugar (
fnchain
name ) -
Binds a new unique and empty function chain to identifier
name
. The function chain's typename is going to incorporate the name of the module in which it was declared.