一个记录值是字段的有序序列。甲字段由一个的字段名,这是一个文本值唯一地标识记录内的字段,以及字段值。字段值可以是任何类型的值,包括记录。可以使用初始化语法构造记录,如下所示:
记录表达式:
[
字段列表选择 ]
字段列表:
字段
字段 ,
字段列表
字段:
字段名称 =
表达式
字段名称:
通用标识符
引用标识符
下面的示例构造一个记录,其字段以x
value1
命名y
,字段以value命名2
。
复制
[ x = 1, y = 2 ]
下面的示例构造一个带有a
名为 a 的字段和嵌套记录值的记录。嵌套记录有一个名为b
value的字段2
。
复制
[ a = [ b = 2 ] ]
在评估记录表达式时,以下内容成立:
复制
[ x = 1, x = 2 ] // error: field names must be unique
[ X = 1, x = 2 ] // OK
没有字段的记录称为空记录,其写法如下:
复制
[] // empty record
虽然在访问一个字段或比较两个记录时,记录字段的顺序并不重要,但在其他上下文中很重要,例如在枚举记录的字段时。
相同的两条记录在获取字段时会产生不同的结果:
复制
Record.FieldNames([ x = 1, y = 2 ]) // [ "x", "y" ]
Record.FieldNames([ y = 1, x = 2 ]) // [ "y", "x" ]
可以使用该Record.FieldCount
函数确定记录中的字段数。例如:
复制
Record.FieldCount([ x = 1, y = 2 }) // 2
Record.FieldCount([]) // 0
除了使用记录初始化语法[ ]
,记录还可以由值列表、字段名称列表或记录类型构成。例如:
复制
Record.FromList({1, 2}, {"a", "b"})
以上等价于:
复制
[ a = 1, b = 2 ]
为记录值定义了以下运算符:
操作员 | 结果 |
---|---|
x = y | 平等的 |
x <> y | 不相等 |
x & y | 合并 |
x ?? y | 合并 |
以下示例说明了上述运算符。请注意,如果字段名称重叠,记录合并使用来自右侧操作数的字段来覆盖来自左侧操作数的字段。
复制
[ a = 1, b = 2 ] & [ c = 3 ] // [ a = 1, b = 2, c = 3 ]
[ a = 1, b = 2 ] & [ a = 3 ] // [ a = 3, b = 2 ]
[ a = 1, b = 2 ] = [ b = 2, a = 1 ] // true
[ a = 1, b = 2, c = 3 ] <> [ a = 1, b = 2 ] // true
记录值的本机类型是内在类型record
,它指定一个开放的空字段列表。
甲表值是行的有序序列。一列是值的有序序列。表的类型决定了表中所有行的长度、表列的名称、表列的类型以及表键的结构(如果有)。
表没有文字语法。提供了几个标准库函数来构造二进制值。例如,#table
可用于从行列表列表和标题名称列表构造表:
复制
#table({"x", "x^2"}, {{1,1}, {2,4}, {3,9}})
上面的例子构造了一个包含两列的表,两列都是type any
。
#table
也可用于指定全表类型:
复制
#table(
type table [Digit = number, Name = text],
{{1,"one"}, {2,"two"}, {3,"three"}}
)
此处新表值具有指定列名和列类型的表类型。
为表值定义了以下运算符:
操作员 | 结果 |
---|---|
x = y | 平等的 |
x <> y | 不相等 |
x & y | 级联 |
x ?? y | 合并 |
表串联对齐同名列并填充null
仅出现在操作数表之一中的列。以下示例说明了表串联:
复制
#table({"A","B"}, {{1,2}})
& #table({"B","C"}, {{3,4}})
一个 | 乙 | C |
---|---|---|
1 | 2 | null |
null | 3 | 4 |
表值的本机类型是自定义表类型(派生自内部类型table
),它列出列名称,将所有列类型指定为 any,并且没有键。(有关表类型的详细信息,请参阅表类型。)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。