[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')