Machine.initiate
From OpenEUO
Revision as of 17:09, 3 January 2011 by Ximan (Talk | contribs) (Created page with "== Calling Pattern == Call local m = sl.machine(a[,b]) -- later local r = m.initiate([d[,...]]) Args d1..dN optional are variadic arguments of any type Results r0..rN are va...")
Calling Pattern
Call
local m = sl.machine(a[,b]) -- later local r = m.initiate([d[,...]])
Args
d1..dN optional are variadic arguments of any type
Results
r0..rN are values returned by the a.exit function
Example Usage
local s = { initiate = function(h,...) local a = {...} print('initiating '..a[1]) return 'a' end, a = function(h) print('a') return 'b' end, b = function(h) print('b') return 'c' end, c = function(h) print('c') return 'exit' end, exit = function(h) print('exiting') return 999 end, monitor = function(s,h,n,g) if g=='exit' then h[1]=h[1]+1; if h[1]<3 then g='a' end end; return g end, }
local h = {0} local m = sl.machine(s,h) local n = m.initiate('live') print(tostring(n))
--> initiating live a b c a b c a b c exiting 999
Description
Calling initiate begins the execution of a previously defined state machine object by calling the function associated with the 'initiate' key in the state table. If no errors are encountered during execution, initiate returns the results returned by the 'exit' state function.
Upon Error
Errors occurring in any of the state functions are reported and handled according to the operant error redirection mode.