Difference between revisions of "Case"

From OpenEUO
Jump to: navigation, search
m (Description)
m (Description)
Line 29: Line 29:
 
== Description ==
 
== Description ==
  
Calling case returns a case closure with one defined method, [[case.on|on]].  This closure can stand in place of complicated if-elseif code and functions analogously to the C language switch case construct except that it can be called anywhere once defined.  The first parameter passed to the [[case.on|on]] method selects a function from the initial case table and calls it with the remaining parameters passed through.  If the selector isn't found among the case table keys, then the default key 'default' is searched for and if found, the associated function is called.  If neither the selector value or 'default' is found in the case table, then an error is raised.
+
Calling case returns a case closure with one defined method, [[case.on|on]].  This closure can stand in place of complicated if-elseif code and functions analogously to the C language switch case construct except that it can be called anywhere once defined.  The first parameter passed to the [[case.on|on]] method selects a function from the initial case table and calls it with the remaining parameters passed through.  If the selector isn't found among the case table keys, then the default key 'default' is searched for and if found, the associated function is called.  If the associated value is not of type 'function', the actual value is returned.  If neither the selector value nor 'default' is found in the case table, then an error is raised. ''fixed in version 0.04''
  
 
== Alternative Calling Patterns ==
 
== Alternative Calling Patterns ==

Revision as of 13:26, 2 November 2010

Calling Pattern

Call

local c = sl.case(casetable)

Args

casetable is a table, where keys are any type and values are functions

Results

c is a case closure

Closure Methods

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

Calling case returns a case closure with one defined method, on. This closure can stand in place of complicated if-elseif code and functions analogously to the C language switch case construct except that it can be called anywhere once defined. The first parameter passed to the on method selects a function from the initial case table and calls it with the remaining parameters passed through. If the selector isn't found among the case table keys, then the default key 'default' is searched for and if found, the associated function is called. If the associated value is not of type 'function', the actual value is returned. If neither the selector value nor 'default' is found in the case table, then an error is raised. fixed in version 0.04

Alternative Calling Patterns

Upon Error

See Also