Difference between revisions of "Case.on"

From OpenEUO
Jump to: navigation, search
m (Created page with "== Calling Pattern == Call local c = sl.case(casetable) -- later local r[,...] = c.on(sel, arg[, ...]) Args sel is any type, used as key to lookup in casetable Results r0......")
 
m (Calling Pattern)
Line 6: Line 6:
 
Args
 
Args
 
  sel is any type, used as key to lookup in casetable
 
  sel is any type, used as key to lookup in casetable
 +
arg0..argN are variadic arguments of any type
 
Results
 
Results
  r0...rN are the indefinite results of applying arg1...argN to the value found in casetable  
+
  r0...rN are the indefinite results of applying arg0...argN to the value found in casetable
  
 
== Example Usage ==
 
== Example Usage ==

Revision as of 13:38, 2 November 2010

Calling Pattern

Call

local c = sl.case(casetable)
-- later
local r[,...] = c.on(sel, arg[, ...])

Args

sel is any type, used as key to lookup in casetable
arg0..argN are variadic arguments of any type

Results

r0...rN are the indefinite results of applying arg0...argN to the value found in casetable

Example Usage

local t = 
  {
  [1]     = function(...) local a={...} print('a') print(a[a[5] ]) end,
  ['1']   = function(...) local a={...} print('b') print(a[a[4] ]) end,
  bye     = function(...) local a={...} print('c') print(a[a[3] ]) end,
  default = function(...) local a={...} print('d') print(a[a[2] ]) end,
  }
local c = sl.case(t)
local z = 'bye'
c.on(z,2,3,4,5,6)
--> 'c'
--> 5

Description

The method on searches for sel among the keys of casetable. If found and the associated value is a function, then the remaining variadic arguments arg0...argN (if any) are passed to that function and its results are returned as the results to the on invocation. If sel is found but the associated value is not a function, then the actual value is returned as the result of the on invocation. If sel isn't found, then a magic value, 'default' is searched for and if found then its associated value is treated in an identical manner.

Upon Error

If neither the passed sel key or the magic 'default' key are found among the keys of casetable, then an error is reported and handled according to the operant error redirection mode.

See Also