我有以下记录,其中包含变体部分:
RVector3 = packed record
[...]
case byte of
0 : (X : Single; Y : Single; Z : Single);
1 : (XY : RVector2);
2 : (Element : array [0 .. 2] of Single);
end;
要更快地访问单个元素,我想添加一个默认属性。
function GetElement(Index : Integer) : Single;
procedure SetElement(Index : Integer; const Value : Single);
property Elements[index : Integer] : Single read GetElement write SetElement; default;
所以我可以做myVector[Dim]
而不是myVector.Element[Dim]
。
现在,我想知道是否有任何方法可以省略getter和setter方法并直接访问变量部分。我知道有可能做
TTestClass = class
private
FTestVector : RVector3;
public
property Test : single read FTestVector.Y write FTestVector.X;
end;
但是可以将其应用于记录吗?如
property Elements[index : Integer] : Single read Element[Index] write Element[Index]; default;
很遗憾,这无法正常工作。
答案 0 :(得分:4)
否,属性获取器或设置器无法直接访问数组的元素。您需要使用getter和setter函数。为了优化性能,如果这对您很重要,则可以标记getter和setter函数inline
。