Chain

From OpenEUO
Jump to: navigation, search

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.

Upon initialization, 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.

See Also