[NAME] ALL.dao.type.array [TITLE] 数值数组类型 [DESCRIPTION] 道语言里array类型表示多维数值数组。 0.1 定义 1 # Elements Enumeration: 2 VectorEnumeration ::= '[' ExpressionList ']' 3 MatrixEnumeration ::= '[' ExpressionList { ';' ExpressionList } ']' 4 VectorEnumeration2 ::= 'array' '{' ExpressionList '}' 5 MatrixEnumeration2 ::= 'array' '{' ExpressionList { ';' ExpressionList } '}' 6 7 # Elements of Arithmetic Progression sequence: count ~ start [ ~ step ] 8 ArrayByArithProg ::= '[' Expression ':' [ Expression ':' ] Expression ']' 9 ArrayByArithProg2 ::= 'array' '{' Expression ':' [ Expression ':' ] Expression '}' 10 11 Array ::= VectorEnumeration | MatrixEnumeration | ArrayByArithProg 12 | VectorEnumeration2 | MatrixEnumeration2 | ArrayByArithProg2 值得注意的是VectorEnumeration或VectorEnumeration2 可以创建矩阵或多维数组,如果表达式列表 ExpressionList的每个表达式 产生一个数组。 array类型支持四种数值类型:int, float, double和complex。 当一个数组以移枚举方式创建,在它的变 量没有类型标注的情况下, 数组的数值类型将从枚举表达式列表推导出。如果表达式列表为空, 该数组 的数值类型将为float。 道数值数组支持多种运算或操作。值得注意的是,它的算数运算都是基于单个元素间的运算。 0.2 例子 1 var vec1 = [1, 2, 3] # array<int> vector, or 1x3 matrix; 2 var vec2 = [1F; 2; 3] # array<float> 3x1 matrix, or transposed vector; 3 var mat1 = [1.0, 2; 3, 4] # array<double> 2x2 matrix; 4 var mat2 = [ [1, 2], [3, 4] ] # 2x2 matrix 5 var mat3 = array{ 1, 2; 3, 4 } # 2x2 matrix 6 var mat4 = array<int>(5){ [1, 2, 3] } # 5x3 matrix; [STRUCTURE] dao.type.array--| dao.type.array: 数值数组类型 (6.6 KB) |--method--| dao.type.array.method: Array methods (4.7 KB)