[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
     
值得注意的是VectorEnumerationVectorEnumeration2 可以创建矩阵或多维数组,如果表达式列表
ExpressionList的每个表达式 产生一个数组。

array类型支持四种数值类型:int, float, doublecomplex。 当一个数组以移枚举方式创建,在它的变
量没有类型标注的情况下, 数组的数值类型将从枚举表达式列表推导出。如果表达式列表为空, 该数组
的数值类型将为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)