[NAME]
ALL.dao.type.tuple

[TITLE]
元组类型

[DESCRIPTION]

一个元组tuple是一个定长的可包含不同类型元素的数组。 元组类型名可包括每个元素的类型信息,而
且还可给每个元素定义一个成员名称。

 0.1  定义 
     
   1  TupleEnum ::= '(' [ Identifier '=' ] Expression { ',' [ Identifier '=' ] Expression } ')'
   2  TupleEnum2 ::= 'tuple' '{' [ Identifier '=' ] Expression { ',' [ Identifier '=' ] Expression } '}'
   3  
   4  Tuple ::= TupleEnum | TupleEnum2
     


 0.2  例子 
     
   1  var tup1 = ( 123, 'abc' )          # 无成员名的元组;
   2  var tup2 = ( index = 123, 'abc' )  # 第一个元素的成员名为"index";
   3  var tup3 = tuple{ 123, name = 'abc' }
   4  
   5  global __result__ = tup3
   6  global __answer__ = ( 123, 'abc' );
     


 0.3  元组类型名 

元组的类型名比数值数组,列表和关联表的要复杂些。 它的基本形式如下: 
     
   1  AnyTuple ::= 'tuple' [ '<' [ '...' ] '>' ]
   2  TupleItemType ::= [ Identifier ':' ] Type
   3  NonEmptyTupleType ::= 'tuple' '<' TupleItemType ( ',' TupleItemType )* [ '...' ] '>'
   4  TupleType ::= AnyTuple | NonEmptyTupleType
     
如果元组类型的最后那个元素类型为...,那么它表示一个不定长度的元组类型。 它表示一个元组除了包
括一些固定的元素外,还可包括一些数目不定的额外元素。 值得注意的是,每个元组对象还是定长的,而
不定长度的元组类型只是表示它可匹配多个长度的元组。
 0.4  例子 
     
   1  tup1 :tuple<int,int> = (1, 2)
   2  tup2 :tuple<index:int,name:string> = (123, 'abc')
   3  tup3 :tuple<int,int,...> = (1, 2, 3, 'abc')