spicy通过unit类型来解析数据单位,unit类型类似于我们所熟知的struct或者是record类型。它里面定义了一系列的具有顺序的字段,每个字段都有name和type,在运行的时候会存放对应的值。unit可以实例化,将值分配给各个字段,并且这些字段值可以被检索。
- module Test;
-
- public type Foo = unit {
- # 定义一个32位的整数
- version: uint32 &default=56; # 可以添加&default属性来添加默认值,否则不会设置默认值
-
- };
- # 实例化为f
- global f:Foo;
- # 你可以赋值,来覆盖默认值56
- # f.version=60;
- print f; # 注意如果里面的字段没有赋值,即使有默认值也不会读取默认值。显示的是not set
- print "version is %s" % f.version; # 注意,访问字段,如果没有赋值,但是有默认值则会读取默认值
-
unit是解析数据的起点或者说入口。如果要使得unit被当前模块外部(即其他文件想要使用该文件定义的unit)需声明为public,仅仅内部访问则可不写。
默认,spicy以network byte的顺序。可