Difference between revisions of "Chain"
From OpenEUO
(Created page with "== Calling Pattern == Call local c = sl.chain(a,b[,...]) Args a is a function b1..bN are functions Results c is a chain closure == Alternative Calling Pattern == Call local...") |
m (→Description) |
||
Line 51: | Line 51: | ||
Calling chain returns a chain closure with two defined methods, [[chain.dispose|dispose]] and [[chain.initiate|initiate]]. The first argument, a, is the monitoring function, and the remaining functions (or a table of functions) make up the body of the execution chain. | Calling chain returns a chain closure with two defined methods, [[chain.dispose|dispose]] and [[chain.initiate|initiate]]. The first argument, a, is the monitoring function, and the remaining functions (or a table of functions) make up the body of the execution chain. | ||
− | Functions passed as the b arguments to chain are called in turn and their results are passed to the a function. If a returns true, the next argument in the chain is executed. | + | Functions passed as the b arguments to chain are called in turn and their results are passed to the a function. If a returns true, the next argument in the chain is executed. See the [[chain.initiate|initiate]] method for more details. |
== Upon Error == | == Upon Error == |
Revision as of 15:40, 18 December 2010
Contents
Calling Pattern
Call
local c = sl.chain(a,b[,...])
Args
a is a function b1..bN are functions
Results
c is a chain closure
Alternative Calling Pattern
Call
local c = sl.chain(a,t)
Args
a is a function t is a table of functions with one-based, contiguous numeric keys
Results
c is a chain closure
Closure Methods
Example Usage
local b01 = function(n,a,b,c) print(n) return true end local b02 = function(a,b,c) print(a..' '..b..' '..c) return string.char(string.byte(a)+1), string.char(string.byte(b)+1), string.char(string.byte(c)+1) end local b05 = {b02,b02,b02} local b00 = sl.chain(b01,b05) local b03, b04 = b00.init('a','b','c') print(b03) print(b04) b00.dispose()
--> a b c 1 b c d 2 c d e 3 3
Description
Calling chain returns a chain closure with two defined methods, dispose and initiate. The first argument, a, is the monitoring function, and the remaining functions (or a table of functions) make up the body of the execution chain.
Functions passed as the b arguments to chain are called in turn and their results are passed to the a function. If a returns true, the next argument in the chain is executed. See the initiate method for more details.
Upon Error
If none of the described argument patterns are matched, an error is reported and handled according to the operant error redirection mode.