跳转至

array 数组操作库

在OpenEX中,数组操作不是通过语法实现,而是通过OpenEX特有的库实现的,比如您不能使用以下语法操作数组
include "array";语句导入

1
2
3
4
5
6
include "system";
include "type";

value local array_1:"数组" = [1,3.14,true];

array_1[0] = 23;
CompileError:变量初始值需要‘=’号
    Filename:main.exf
    FileLine:6
    Code:array_1
    CompilerVersion:OpenEX_ScriptCompile_AbstractSyntaxTree_v0.1.3
Exception in thread "main" ex.openex.exception.CompileException
    at ex.openex.compile.parser.SetValueParser.eval(SetValueParser.java:45)
    at ex.openex.compile.Compiler.compile(Compiler.java:52)
    at ex.openex.compile.CompileManager.compile(CompileManager.java:46)
    at ex.openex.CommandManager.command(CommandManager.java:26)
    at ex.openex.Main.main(Main.java:37)

你可以使用以下实现对数组的操作

get_object 获取数组元素

该方法等同余array[<index>],数组从下标0开始向上计数,请防止数组下标越界

  • 参数1 ARRAY 输入数组型变量,注意类型
  • 参数2 INT 数组索引
1
2
3
4
5
6
include "system";
include "type";

value local array_1:"数组" = [1,3.14,true];

system.print(array.get_object(array_1,0));
1

set_object 设置数组元素

该方法等同余array[<index>] = <var>, 请防止数组下标越界

  • 参数1 ARRAY 输入数组型变量
  • 参数2 OBJECT 任意值
  • 参数3 INT 索引
1
2
3
4
5
6
7
8
include "system";
include "type";

value local array_1:"数组" = [1,3.14,true];

array.set_object(array_1,2333,0)

system.print(array.get_object(array_1,0));
2333

length 获取数组长度

该方法等同余array.length

  • 参数1 ARRAY 输入数组型变量
  • 返回值 INT 数组的长度
1
2
3
4
5
6
include "system";
include "type";

value local array_1:"数组" = [1,3.14,true];

system.print(array.length(array_1));
3