元素声明
元素声明用于定义类的元素或字段,其语法根据所声明字段的类型而有所不同,具体如下:
[nullable] type-identifier | struct-name | enum element-name[length] [ = value
[, element-name [length] [= value]] …
];
或
vector {type-identifier | struct-name} vector-name;
或
[optional] struct-name element-name;
元素语句声明字段名称及其类型,并可能指定默认值。整型、浮点型、日期型和枚举型字段可以在模式中指定默认值。
当在数据库中创建该类型的记录且未在字段中显式“放入”值时,将为这些字段分配默认值。(字符串型和字符型字段不能指定默认值。)
结构体类型的字段可以声明为可选。可选声明意味着该字段可能存储在数据库中,也可能不存储。如果字段未存储,运行时不会在数据布局中为其预留(分配)空间(除了 2或4 字节的引用),并且相关的“获取”方法将返回空指针。
以下示例展示了类 Everything 的各种元素声明(请注意字段 fc
和 u2
的默认值):
struct Id
{
uint4 seq;
};
struct Item
{
uint4 id;
string name;
};
enum FC_ {
XON,
CTS
} flow_control;
declare database simple;
declare OID Id[20000];
class Everything
{
date e_date[7];
time e_time[12];
flow_control fc = XON;
uint2 u2 = 99;
nullable uint4 u4, h;
blob blo;
string c;
vector<uint2> vint;
vector<string> vs;
vector<Item> is;
optional Item alternate;
};
在元素语句中,例如
nullable uint4 u4, h;
可空属性同时适用于字段 u4
和 h
。
任何字段类型都可以声明为可空。可空属性会增加一个字节的开销(用于空值指示字段)。