我试图想象一下ISO Pascal的一部分。
语法允许你这样做:
type RPoint = Record
Case Boolean of
False : (X,Y,Z : Real);
True : (R,theta,phi : Real);
end;
要构建它,你可以:
var p: RPoint;
begin
p.x := 1;
end.
有一部分我不明白:Case Boolean
部分的目的是什么?我知道你可以做case MyVal: Boolean
;然后MyVal
成为字段选择器。但是,没有字段选择器的目的是什么,只是一种类型?
此外,标准说:
每个变体部分应与一个指定选择器类型的类型相关联 变体部分。如果variant-part的variant-selector包含tag-field,或者case-constant- 变体部分的每个变体的列表只包含一个case-constant,然后是selector-type 用标记类型表示,变体部分的每个变体应与那些相关联 由case-constant-list的case-constants表示的selector-type指定的值 变种。否则,变体部分拥有的选择器类型应该是新的序数类型 构造为对变体部分的每个变体只有一个值,而没有其他变体 每个此类变体应与该类型的不同值相关联。
我不太清楚selector-type
是什么以及为什么它会成为新ordinal-type
。 selector-type
的{{1}}类似于case Boolean of
中的类型吗?每个case-constant-list
只有一个case-constant
与它有什么关系?
答案 0 :(得分:2)
这里你的变体记录有两个可能的“个性”。 Boolean是具有两个可能值的类型。所以,这似乎是一个合乎逻辑的选择。但是,它不必是布尔值。
您可以使用其他一些序数类型(如Integer或Byte)来获得相同的效果。例如:
GridBagLayout