语法与类型

本文介绍 Tableau 的基本语法、变量声明和数据类型。

概述

Tableau 的大部分语法和类型借鉴自 Protocol Buffers (proto3)Golang

Scalar types(标量类型)

详细说明请参考 Protocol Buffers Proto3 Scalar

类别类型默认值
数值int32, uint32
int64, uint64
float, double
0
0
0.0
布尔值boolfalse
字符串string""
字节bytes""

Composite types(复合类型)

类型说明
structstruct 映射为 protobuf 的 message
listlist 映射为 protobuf 的 repeated 字段。
mapmap 映射为 protobuf 的 map 字段。

Struct(结构体)

特性说明
横向布局(Horizontal layout)每个标量字段占一个单元格。
简单 in-cell struct每个字段必须是标量类型。
以逗号分隔的字段列表,例如:1,test,3.0
若数据列表长度与 struct 字段数不一致,则按顺序填充,未配置的字段使用标量类型的默认值。

List(列表)

特性说明
横向布局(Horizontal layout)list 的默认布局。
元素类型可以是 struct标量
纵向布局(Vertical layout)list 的元素类型应为 struct
简单 in-cell list元素类型必须是标量
以逗号分隔的元素列表,例如:1,2,3
可扩展(Scalable)支持动态大小的 list。
忽略空元素智能识别任意位置的空元素。

Map(映射)

特性说明
横向布局(Horizontal layout)
纵向布局(Vertical layout)map 的默认布局。
Hash map实现为无序 map 或 hash map。
Ordered maptableauio/loader 支持。
- C++
简单 in-cell mapkey 和 value 都必须是标量类型。
以逗号分隔的 key:value 对列表,例如:1:10,2:20,3:30
可扩展(Scalable)支持动态大小的 map。
忽略空条目智能识别任意位置的空条目。

Enumeration(枚举)

特性说明
三种枚举值形式1. 枚举值编号(number)。
2. 枚举值名称(name)。
3. 枚举值别名(alias,通过 EnumValueOptions 指定)。
校验自动检查枚举值的合法性。

Empty value(空值)

类型说明
scalar空标量将使用该标量类型的默认值填充。
struct若所有字段均为空,则不会生成该 struct。
list若 list 大小为 0,则不会生成该 list。
若 list 的元素(struct 类型)为空,则不会追加该元素。
map若 map 大小为 0,则不会生成该 map。若 map 的 value(struct 类型)为空,则不会插入该条目。
nesting递归地判断是否为空。