Toggle menu
876
3.8K
30.2K
279.1K
Catglobe Wiki
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Function class: Difference between revisions

From Catglobe Wiki
Tungocman (talk | contribs)
No edit summary
Dennis (talk | contribs)
No edit summary
Line 1: Line 1:
=== '''Function : The function object'''  ===
{{CGscriptClass_Template
 
|Name=<nowiki>Function</nowiki>
&nbsp;
|Description=<nowiki>The function object</nowiki>
 
|Constructors=
==== <span style="color:#a52a2a;">'''Constructors'''</span> ====
{{CGscriptConstructors_Template|Parameters=
 
{{CGscriptParameters_Template|Type=string|Name=<nowiki>functionName</nowiki>|Description=<nowiki>Name of the variable defined as a function</nowiki>}}
*<span style="color:#000000;">'''(string functionName)''' - Create a new function that will reuse an existing function.</span>
|Description=<nowiki>Create a new function that will reuse an existing function</nowiki>}}
 
|Methods=
==== <span style="color:#a52a2a;">'''Methods'''</span> ====
{{CGscriptMethods_Template|ReturnType=AnyType|Name=<nowiki>Call</nowiki>|Parameters={{CGscriptParameters_Template|Type=params AnyType|Name=params AnyType|Description=}}
 
|Description=<nowiki>Evaluate a function with positional parameters.</nowiki>}}
*<span style="color:#000000;">'''AnyType Call(Params AnyType)''' - Evaluate a function with positional parameters.</span>  
{{CGscriptMethods_Template|ReturnType=AnyType|Name=<nowiki>Invoke</nowiki>|Parameters=
*<span style="color:#000000;">'''AnyType Invoke(array parameter)''' - Evaluate a function with positional parameters.</span>  
{{CGscriptParameters_Template|Type=array|Name=<nowiki>param</nowiki>|Description=<nowiki>The parameters given to the function mapped to the position used in the definition</nowiki>}}
*<span style="color:#000000;">'''AnyType Invoke(Dictionary parameter)''' - Evaluate a function with named parameters.</span>  
|Description=<nowiki>Evaluate a function with positional parameters.</nowiki>}}
*<span style="color:#000000;">'''string ToString()''' - The string representation of the object.</span>
{{CGscriptMethods_Template|ReturnType=AnyType|Name=<nowiki>Invoke</nowiki>|Parameters=
 
{{CGscriptParameters_Template|Type=Dictionary|Name=<nowiki>param</nowiki>|Description=<nowiki>The parameters given to the function mapped to the names used in the definition</nowiki>}}
==== <span style="color:#a52a2a;">'''Properties'''</span> ====
|Description=<nowiki>Evaluate a function with named parameters.</nowiki>}}
 
{{CGscriptMethods_Template|ReturnType=string|Name=<nowiki>ToString</nowiki>|Description=<nowiki>The string representation of the object.</nowiki>}}
*<span style="color:#000000;">'''string ObjectTypeName HasGetter'''&nbsp; - The name of the type of object.</span>  
|Properties=
*<span style="color:#000000;">'''TypeInformation TypeInformation HasGetter'''&nbsp; - Get information about this class.</span>
{{CGscriptProperties_Template|ReturnType=string|Name=<nowiki>ObjectTypeName</nowiki>|HasGetter=1|Description=<nowiki>The name of the type of object.</nowiki>}}
 
{{CGscriptProperties_Template|ReturnType=TypeInformation|Name=<nowiki>TypeInformation</nowiki>|HasGetter=1|Description=<nowiki>Get information about this class.</nowiki>}}
&nbsp;
}}


==== <span style="color:#a52a2a;">'''Scoping of variables'''</span>  ====
==== <span style="color:#a52a2a;">'''Scoping of variables'''</span>  ====

Revision as of 08:40, 22 September 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:

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

Ex2:

number i = 10;
function a = function () {
  print(i);
  print(b);
};
number b = 20;
a.Call();          // 10 20

Ex3:

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

Ex4:

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

Ex5:

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

 


Recursion

Ex1:

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

Ex2:

function 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
function 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;
function 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

function 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));

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

function f;                             // will be empty
Function 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