Difference between revisions of "Function class"

From Catglobe Wiki
Jump to: navigation, search
Line 25: Line 25:
 
<span style="color:#a52a2a;">'''Ex1:'''</span>  
 
<span style="color:#a52a2a;">'''Ex1:'''</span>  
  
<source lang="javascript">function a = function ()
+
<source lang="javascript">object a = function ()
 
{
 
{
 
   number b = 1;
 
   number b = 1;
Line 35: Line 35:
  
 
<source lang="javascript">number i = 10;
 
<source lang="javascript">number i = 10;
function a = function () {
+
object a = function () {
 
   print(i);
 
   print(i);
 
   print(b);
 
   print(b);
 
};
 
};
 
number b = 20;
 
number b = 20;
a.Call();          // 10 20</source>
+
a.Call();          // 10 20
 +
Function f = new Function("a");
 +
f.Call();          // 10 20
 +
Function x =  a;
 +
x.Call();          // 10 20
 +
 
 +
</source>
  
 
<span style="color: rgb(165, 42, 42);">'''Ex3:'''</span>  
 
<span style="color: rgb(165, 42, 42);">'''Ex3:'''</span>  
  
 
<source lang="javascript">number i = 10;
 
<source lang="javascript">number i = 10;
function a = function () {
+
object a = function () {
 
   print(i);
 
   print(i);
 
   print(b);
 
   print(b);
 
};
 
};
 
a.Call();              // Not work, get error: Undefined variable name: 'b'. @
 
a.Call();              // Not work, get error: Undefined variable name: 'b'. @
number b = 20;</source>  
+
number b = 20;
 +
 
 +
</source>  
  
 
<span style="color:#a52a2a;">'''Ex4:'''</span>  
 
<span style="color:#a52a2a;">'''Ex4:'''</span>  
  
 
<source lang="javascript">number i = 10;
 
<source lang="javascript">number i = 10;
function a = function (number i) {
+
object a = function (number i) {
 
   print(i);
 
   print(i);
 
};
 
};
Line 64: Line 72:
  
 
<source lang="javascript">number i = 10;
 
<source lang="javascript">number i = 10;
function a = function () {
+
object a = function () {
 
   number i = 100;
 
   number i = 100;
 
   print(i);
 
   print(i);
Line 76: Line 84:
 
<span style="color:#a52a2a;">'''Ex1:'''</span>  
 
<span style="color:#a52a2a;">'''Ex1:'''</span>  
  
<source lang="javascript">function a = function (number i)
+
<source lang="javascript">object a = function (number i)
 
{
 
{
 
  if (i == 0) return;
 
  if (i == 0) return;
Line 86: Line 94:
 
<span style="color:#a52a2a;">'''Ex2:'''</span>  
 
<span style="color:#a52a2a;">'''Ex2:'''</span>  
  
<source lang="javascript">function a = function (number i){
+
<source lang="javascript">object a = function (number i){
 
  if (i == 0) return;
 
  if (i == 0) return;
 
  a.Call(i - 1);
 
  a.Call(i - 1);
Line 100: Line 108:
  
 
<source lang="javascript">// IN FIRST WORKFLOW
 
<source lang="javascript">// IN FIRST WORKFLOW
function x = function (number a, number b) {
+
object x = function (number a, number b) {
 
return a + b;
 
return a + b;
 
};
 
};
Line 112: Line 120:
 
<source lang="javascript">// IN FIRST WORKFLOW
 
<source lang="javascript">// IN FIRST WORKFLOW
 
number i = 10;
 
number i = 10;
function x = function (number a, number b) {
+
object x = function (number a, number b) {
 
return a + b + i;
 
return a + b + i;
 
};
 
};
Line 126: Line 134:
 
==== <span style="color:#a52a2a;">'''Examples'''</span>  ====
 
==== <span style="color:#a52a2a;">'''Examples'''</span>  ====
  
<source lang="javascript">function x = function (number a, number b, number c = 10)
+
<source lang="javascript">object x = function (number a, number b, number c = 10)
 
{
 
{
 
   number d = 1;
 
   number d = 1;
Line 136: Line 144:
 
print(x.Call(1,2,3));
 
print(x.Call(1,2,3));
  
function y = x;
+
object y = x;
 
print(y.Call(1,2));
 
print(y.Call(1,2));
 
print(y.Call(1,2,3));
 
print(y.Call(1,2,3));
 
   
 
   
function z = new Function("x");        // remmember that new Function("x") NOT new function("x")
+
object z = new Function("x");        // remmember that new Function("x") NOT new function("x")
 
print(z.Call(1,2));
 
print(z.Call(1,2));
 
print(z.Call(1,2,3));
 
print(z.Call(1,2,3));
  
function f;                            // will be empty
+
object f;                            // will be empty
Function ff;                            //  get error because there is no default constructor
+
object ff;                            //  get error because there is no default constructor
  
 
array paraArray_a = {1,2};
 
array paraArray_a = {1,2};

Revision as of 09:39, 19 December 2011

Function



The function object

Constructors

  • (string functionName "Name of the variable defined as a function") - Create a new function that will reuse an existing function

Methods

  • AnyType Call(params AnyType) - Evaluate a function with positional parameters.
  • AnyType Invoke(array param "The parameters given to the function mapped to the position used in the definition") - Evaluate a function with positional parameters.
  • AnyType Invoke(Dictionary param "The parameters given to the function mapped to the names used in the definition") - Evaluate a function with named parameters.
  • string ToString() - The string representation of the object.

Properties

  • string ObjectTypeName { get; } - The name of the type of object.
  • TypeInformation TypeInformation { get; } - Get information about this class.


Scoping of variables

Ex1:

object a = function ()
{
   number b = 1;
   return true;
};
print(b);             // Not work, get error: Undefined variable name: 'b'. @

Ex2:

number i = 10;
object a = function () {
  print(i);
  print(b);
};
number b = 20;
a.Call();          // 10 20
Function f = new Function("a");
f.Call();          // 10 20
Function x =  a;
x.Call();          // 10 20

Ex3:

number i = 10;
object a = function () {
  print(i);
  print(b);
};
a.Call();              // Not work, get error: Undefined variable name: 'b'. @
number b = 20;

Ex4:

number i = 10;
object a = function (number i) {
  print(i);
};
a.Call(100);                    // 100
print(i);                       // 10

Ex5:

number i = 10;
object a = function () {
  number i = 100;
  print(i);
};
a.Call();        // Not work, get error:  Illegal variable re-declaration @

 


Recursion

Ex1:

object a = function (number i)
{
 if (i == 0) return;
 a.Call(i - 1);
 return i;
};
a.Call(49);            // Return 49

Ex2:

object a = function (number i){
 if (i == 0) return;
 a.Call(i - 1);
 return i;
};
a.Call(50);           // get error because the maximum limit of recursion is: 49


Send function to Called Workflow

Ex1:

// IN FIRST WORKFLOW
object x = function (number a, number b) {
return a + b;
};
Workflow_call(37248984, {x});

//  IN SECOND (CALLED) WORKFLOW (Resource Id: 37248984)
array Workflow_parameters = Workflow_getParameters();
return Workflow_parameters[0].Call(1,2);
// ------get result: 3---------


Ex2:

// IN FIRST WORKFLOW
number i = 10;
object x = function (number a, number b) {
return a + b + i;
};
Workflow_call(37248984, {x});

// IN SECOND (CALLED) WORKFLOW (Resource Id: 37248984)
array Workflow_parameters = Workflow_getParameters();
return Workflow_parameters[0].Call(1,2);
// ------get result: 13---------


Examples

object x = function (number a, number b, number c = 10)
{
   number d = 1;
   return a + b + c + d + p;
};
number p = 10;
 
print(x.Call(1,2));
print(x.Call(1,2,3));

object y = x;
print(y.Call(1,2));
print(y.Call(1,2,3));
 
object z = new Function("x");         // remmember that new Function("x") NOT new function("x")
print(z.Call(1,2));
print(z.Call(1,2,3));

object f;                             // will be empty
object ff;                            //  get error because there is no default constructor

array paraArray_a = {1,2};
array paraArray_b = {1,2,3};
print(x.Invoke(paraArray_a));
print(x.Invoke(paraArray_b));


Dictionary dic1 = {"a": 1,"b": 2};
print(x.Invoke(dic1));                                     // 24
 
Dictionary dic2 = {"a": 1,"b": 2,"c": 3};
print(x.Invoke(dic2));                                     // 17

Dictionary dic3 = {"c": 3,"a": 1,"b": 2};
print(x.Invoke(dic3));                                     // 17

Dictionary dic = {"para_1": 1,"para_2": 2,"para_3": 3};
print(x.Invoke(dic));            //  will cause error because the keys in dictionary not the same as name of parameters which is defined in function x