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
No edit summary
 
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
=== '''Function : The function object'''  ===
{{CGscriptClass_Template
 
|Name=<nowiki>Function</nowiki>
&nbsp;
|Description=<nowiki>The function object</nowiki>
 
|InheritsFrom=object|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=object|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=object|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=object|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>|Inherited=object|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|Inherited=object|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>  ====
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><br>  
a.Call();          // 10 20
Function f = new Function("a");  // Create a function f by using the constructor of this Function class
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);
};
};
a.Call(100);                    // 100
a.Call(100);                    // 100
print(i);                      // 10</source>  
print(i);                      // 10
Function f = new Function("a"); // Create a function f by using the constructor of this Function class
f.Call(100);                    // 100
print(i);                      // 10
 
</source>  


<span style="color:#a52a2a;">'''Ex5:'''</span>  
<span style="color:#a52a2a;">'''Ex5:'''</span>  


<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 70: Line 83:
a.Call();        // Not work, get error:  Illegal variable re-declaration @</source> &nbsp;  
a.Call();        // Not work, get error:  Illegal variable re-declaration @</source> &nbsp;  


<br>  
<br>


==== <span style="color:#a52a2a;">'''Recursion'''</span>  ====
==== <span style="color:#a52a2a;">'''Recursion'''</span>  ====
Line 76: Line 89:
<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 82: Line 95:
  return i;
  return i;
};
};
a.Call(49);            // Return 49</source>  
a.Call(49);            // Return 49
Function f = new Function("a"); // Create a function f by using the constructor of this Function class
f.Call(49);            // Return 49
</source>


<span style="color:#a52a2a;">'''Ex2:'''</span>  
<span style="color:#a52a2a;">'''Ex2:'''</span>  


<source lang="">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 101: Line 116:


<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 113: Line 128:
<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 127: Line 142:
==== <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 137: Line 152:
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};
Line 163: Line 178:


Dictionary dic = {"para_1": 1,"para_2": 2,"para_3": 3};
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</source><br>  
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</source><br>
 
[[Category:Data_Types_Literals_and_Variables]]

Latest revision as of 06:48, 2 July 2020

Function



The function object

Parent class

Inherits from object

Constructors

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

Methods

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

Properties

  • string ObjectTypeName { get; } - The name of the type of object.
  • (From 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");   // Create a function f by using the constructor of this Function class
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
Function f = new Function("a"); // Create a function f by using the constructor of this Function class
f.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
Function f = new Function("a"); // Create a function f by using the constructor of this Function class
f.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