Swan 表达式 - 数组相关操作
ANSYS Swan 语言表达式中,支持数组相关操作。支持的操作包括
^
scalar 转 array 操作。使用样例如
function repetitionExpr (i1: int32)
returns (o1: int32^3)
{
let o1 = i1 ^3;
}
在以上例子中,输出长度为 3 ,i1
为元素值的数组。
[]
构造数组操作。使用样例如
function arrayConstructorExpr ()
returns (o1: int32^3)
{
let o1 = [1,3,5];
}
在以上例子中,输出流为长度为3的数组,元素分别为 1
, 3
, 5
。
@
数组拼接操作。使用样例如
function appendExpr (i1: int32^2; i2: int32^3)
returns (o1: int32^5)
{
let o1 = i1 @ i2;
}
arr[idx]
获取数组元素值操作。使用样例如
function projectionExpr (i1: int32^3)
returns (o1: int32)
{
let o1 = i1[1];
}
(arr.[idx] default val)
使用变量索引获取数组元素值操作。使用样例如
function projWithDefaultExpr (i1: int32^3; idx: int32)
returns (o1: int32)
{
let o1 = (i1.[idx] default 0);
}
(arr with [idx] = val)
输出新数组,索引 idx 对应元素的值为 val
。使用样例如
function arrayUpdateExpr (i1: int32^5)
returns (o1: int32^5)
{
let o1 = (i1 with [1] = 42);
}
在上例中,索引1
对应的元素更新为 42
。
在一次操作中,可以修改多个索引对应的元素。使用样例如
function arrayUpdateExpr2 (i1: int32^5)
returns (o1: int32^5)
{
let o1 = (i1 with [1] = 42; [2] = 43);
}
transpose
转置运算。使用样例如
function transposeExpr (i1: int32^2^3^4^5)
returns (o1: int32^2^5^4^3)
{
let o1 = transpose{1,3}(i1);
}
在以上样例中,维度为 5
和 3
的两维度进行了转置。
reverse
取反运算。使用样例如
function reverseExpr (i1: int32^3)
returns (o1: int32^3)
{
let o1 = reverse(i1);
}
[i .. j]
数组切片操作。使用样例如
function sliceExpr (i1: int32^5)
returns (o1: int32^3)
{
let o1 = i1[1 .. 3];
}
flatten
展开操作。使用样例如
function flattenExpr (i1: int32^3^2)
returns (o1: int32^6)
{
let o1 = flatten(i1);
}
效果为将多维数组展开为1维数组。
pack
数组压缩操作。使用样例如
function packExpr (i1: int32^6)
returns (o1: int32^2^3)
{
let o1 = pack<<2, 3>>(i1);
}
在上例中,将长度为6的一维数组,压缩为具备2项长度为3的二维数组。