跳转至内容

Futurebasic/语言/参考/begin record

来自维基教科书,自由的教科书

开始记录

[编辑 | 编辑源代码]

✔ 外观 ✔ 标准 ✔ 控制台

begin record typeName
  recDefnBlock
end record

2000 年 7 月 19 日(版本 3)

开始定义“真”记录类型(与使用 dim record...dim end record 语句定义的伪记录类型相对)。记录类型定义必须以 end record 语句结束。

begin record...end record 块不可执行,因此您无法通过将其放入条件执行结构(例如 long if/end if)中来改变其效果。但是,您可以通过将其放在 compile long if 块中来有条件地将其包含或排除在程序之外。

begin record...end record 块中定义的记录类型在范围上是全局的,可以在块出现的位置以下的任何地方使用。

typeName 是标识记录类型的名称。此名称在程序中所有定义的记录类型中必须是唯一的。
recDefnBlock 是一个或多个 dim 语句的块。这些 dim 语句的语法与普通 dim 语句相同。但是,这些 dim 语句不是声明变量,而是声明此类型记录中字段的名称和类型。字段名称不必对此类型记录唯一(即,不同的记录类型可以使用与该记录类型相同的字段名称)。字段可以是任何数据类型,包括以前定义的记录类型。字段也可以是任何类型元素的数组。

您还可以使用以下“前导点”语法在记录定义块中,以声明“空”空间;即,记录中某些未被任何字段名称标识的字节

DIM .constant

...其中 constant 是一个整数字面量,或一个符号常量名(不带前导下划线字符)。这将声明指定数量的字节为“无名”。

您也可以在字段名称定义后使用“分号”语法,以指定在该字段的开头和下一个字段的开头之间应跳过多少字节。您可以使用它在记录中插入“无名”字节,或使字段在内存中重叠。有关分号语法的更多信息,请参阅 dim 语句。

使用 begin record...end record 定义记录类型后,可以使用它就像其他任何数据类型一样。这意味着

  • 您可以将变量声明为 typeName 类型;
  • 您可以将数组声明为 typeName 类型;
  • 您可以将其他记录类型中的字段声明为 typeName 类型。

end record 语句以下的任何地方,可以使用 dim 语句,以及 as 关键字,以声明 typeName 类型的变量、数组或字段。例如,如果您定义了一个名为 Address 的记录类型,那么您可以执行以下操作

dim myHouse as Address, yourHouse as Address
dim relatives(15) as Address
begin record EmployeeInfo
  dim 50 name$
  dim 9 socSecNo$
  dim 20 hobbies$[9]
  dim empAddress as Address
end record

在声明了给定记录类型的变量之后,可以使用“嵌入点”语法来引用记录中的各个字段。使用上面的例子

dim mySecretary as EmployeeInfo
mySecretary.socSecNo$ = "456-78-9999"

记录数组和字段数组

[编辑 | 编辑源代码]

使用伪记录数组时,始终在表达式末尾写数组下标,无论表达式指示的是整个记录还是其字段之一。例如,如果我们有一个名为 game 的伪记录数组,那么 game(7) 指的是数组中的第 7 个元素。如果该记录类型有一个名为 score 的字段,那么我们表示 game(7)score

game.score(7)     'pseudo-record

示例

begin record StudentInfo
  dim 20 firstName$
  dim 20 lastName$
  dim 1 finalGrade$
end record
dim myStudents(35) as StudentInfo
'This represents the final grade of myStudent #14:
myStudents.finalGrade$(14)= "B"

真记录内的数组

[编辑 | 编辑源代码]

真记录能够在每个记录中保存数组。这个特殊的嵌入式数组由使用方括号(而不是圆括号)表示各个元素来指定。方括号用于指定维度和访问子元素。

示例

begin record StudentInfo
  dim 20 firstName$
  dim 20 lastName$
  dim grades[100]
end record
dim myStudents(35) as StudentInfo
myStudents.grades[1](5) = 96

在本示例的最后一行中,学生编号 5 的成绩元素编号 1 被设置为 96。

无特别备注。

另请参阅

[编辑 | 编辑源代码]

dim record...dim end record; dim; begin union; sizeof; offsetof

语言参考

华夏公益教科书