PeopleSoft-数组创建及常用API

一维数组

空数组

  • any类型
1
2
3
local array Of any  &arr1 = createArray();
local array &arr1 = createArray(); //不指定类型即为任意类型;
// 初始化一个不含元素的任意类型空数组;数组下标从1开始,数组的长度为 0;
  • string类型
1
2
3
4
5
6
7
8
9
local array Of string &arr1 = CreateArrayRept("",0);
// 初始化一个不含元素的string类型的数组;数组下标从1开始,长度为0;

local array Of string &arr1 = CreateArrayRept("zc",3);
/*
"zc" -- 表示需要初始化时插入的string元素;
3 --表示创建数组的长度;
创建了一个string类型的数组,同时插入三个元素,每个元素都是"zc"
*/
  • number类型
1
2
3
4
5
6
7
8
9
local array of number &arr1 = CreateArrayRept(0,0);
// 初始化一个不含元素的number类型的数组;数组下标从1开始,长度为0;

local array of number &arr1 = CreateArrayRept(2,3);
/*
2 -- 表示需要初始化时插入的number元素;
3 --表示创建数组的长度;
创建了一个number类型的数组,同时插入三个元素,每个元素都是2
*/
  • record类型
1
2
Local Array of Record &AR = createAyyayRpt(&rec, 0);
// 初始化一个不含元素的record类型的数组;数组下标从1开始,长度为0;

非空数组

  • string类型
1
2
local array of string &arr1 = CreateArray("X",123);
// 初始化时直接插入两个string元素;数组的第一个元素下标是1;数组长度为2;
  • number类型
1
2
local array of number &arr1 = CreateArray(123,234,345);
// 初始化时直接插入三个number类型元素;数组的第一个元素下标是1;数组长度为3;
  • record类型
1
2
local array of record &arr1 = CreateArray(&rec1,&rec2,&rec3);
// 初始化时直接插入三个record元素;数组的第一个元素下标是1;数组长度为3;

二维数组

空数组

  • any类型
1
2
3
local array of array of any &arr2 = CreateArray(CreateArray()); 
&arr2.shift();
//创建一个二维的any类型的数组;shift()函数是删掉数组;
  • string类型
1
2
local array of array of string &arr2 = CreateArrayRept(CreateArrayRept("", 0), 0); 
//创建一个二维的string类型的数组;
  • number类型
1
2
local array of array of string &arr2 = CreateArrayRept(CreateArrayRept(0, 0), 0); 
//创建一个二维的number类型的数组;

非空数组

  • any类型
1
2
local array of array of any &arr2 = CreateArray(CreateArray()); 
//创建一个二维的any类型的非空数组;数组有一个null数组元素,但是无法获取;数组长度为1
  • string类型
1
2
local array of array of string &arr2 = CreateArray(CreateArray("",0)); 
//创建一个二维的string类型的数组;数组有一个null数组元素,但是无法获取;数组长度为1
  • number类型
1
2
local array of array of number &arr2 = CreateArray(CreateArray(0,0)); 
//创建一个二维的number类型额数组,数组有一个元素,

数组常用函数

  • CreateArrayRept
1
2
&arr1 = CreateArrayRept(100, 3);
//创建一个重复的数组,三个元素都是100;
  • CreateArrayAny()
1
2
local Array of Any &ArrayAny = CreateArrayAny(1, 2, "hi", "there");
//创建一个any类型的一维数组;
  • push()
1
2
3
&arr = createArray("a","b","c");
&arr.push("z");
//将“z”压入&arr数组中,此时&arr包含:“a”,“b”,“c”,“z”。
  • find()
1
2
3
4
5
6
//这个方法仅适用于一维和二维数组,三维及以上会报错;
&arr = createArray("a","b","c");
/*一维*/
//根据元素名称获取下标;
local number &indx = &arr.find("a"); --&indx = 1

  • get()
1
2
3
4
5
&arr = createArray("a","b","c");
/*一维*/
//获取下标获取元素名称;
local string &itname = &arr.get(1); --&itname = "a"

  • join()
1
2
3
4
5
6
7
//此方法可以将一个数组的所有元素输出一个string类型的字符串;
Local array of array of number &AAN;

&AAN = CreateArray(CreateArray(1, 2), CreateArray(3, 4), 5);
&STR = &AAN.Join(", ");
//result :((1, 2), (3, 4), 5);逗号可以替换为需要的符号;

  • shift()
1
2
3
4
&arr = createArray("a","b","c");
local string &str = &arr.shift();
//删除并且获取数组最底层的元素;此时&str的值为 a,而且&arr数组中只剩下两个元素,一个是“b”,“c”。

  • unshift()
1
2
3
4
5
//插入元素,单个或者多个;
&A = CreateArray("a", "B", "c");
&A.Unshift("x", "Y");
//结果:x Y a B c

  • pop()
1
2
3
4
&arr = createArray("a","b","c");
local string &str = &arr.pop();
//删除并且获取数组最顶层的元素;此时&str的值为 c,而且&arr数组中只剩下两个元素,一个是“a”,“b”。

  • clone()
1
2
3
4
5
6
7
Local Array of Array of String &AAN, &AAN2;

&AAN = CreateArray(CreateArray("A", "B"), CreateArray("C", "D"), "E");
&AAN2 = &AAN.Clone();
&AAN2[1][1] = "Z";
//方法为克隆方法,&AAN2不仅获取了&AAN数组所有的内容,而且,会新建一个引用,如果更改&AAN2的内容,&AAN的内容不会发生变化;

  • next()
1
2
3
4
5
6
7
Local array of string &arr1 = CreateArray("a", "s", "d", "f");
&index = 0;
While &arr1.Next(&index)
MessageBox(0, "", 0, 0, &arr1 [&index]);
End-While;
//此方法会先自增参数,然后获取对应元素;使用该方法可以循环获取数组元素;

  • replace
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Local array of string &AS;
&AS = CreateArray("AA", "BB", "CC");
&AS.Replace(1, 1, "ZZ", "YY");
//结果: ZZ YY BB CC
&AS.Replace(2, 2, "MM");
//结果: ZZ MM CC
&AS.Replace( - 2, - 1, "OO");
//结果: ZZ OO CC
/*
第一个数字为需要替换的开始下标;第一个数字可以为负数,即反向开始;
第二个数字为需要替换的数组个数;
第三个参数开始为可选参数,如果为无,表示替换为空元素;
*/

  • Reverse()
1
2
3
&AN = CreateArray(CreateArray(1, 2), CreateArray(3, 4), CreateArray(5, 6)).reverse();
//结果: ((5,6), (3,4), (1,2); 仅反转该层级数组的顺序,不会反转子数组的顺序;

  • set()
1
2
3
4
.//根据下标获取到对应元素赋值
&MyArray[8] = &MyValue;
&MyArray.Set(8) = &MyValue;

  • sort()
1
2
3
4
&A = CreateArray("John", "Frank", "Harry");
&A.Sort("A"); //&A.Sort("A") ; 按字符集排序, A为升序,D为降序;
//结果:“ Frank”,“ Harry”,“ John”

  • Subarray()
1
2
3
4
5
6
7
8
9
//创建子数组,仅支持一维数组,如果是多维数组,则使用clone()方法;
&A = CreateArray("John", "Frank", "Harry");
&AAN = &A.Subarray(2, 2);
/*
参数1:数组开始下标;
参数2:数组截取长度;
注意:不支持反向截取;
*/

  • substitute()
1
2
3
4
5
6
7
8
9
10
11
//替换元素
&A = CreateArray();
&A[1] = "John";
&A[2] = "Jane";
&A[3] = "Henry";
&A.Substitute("Henry", "Hamilton");
/*
参数1:需要被替换的元素;
参数2:替换后的元素;
*/