有没有办法像我们在 C 和 C++ 中那样对 Delphi 记录执行聚合分配?即是否有以下等效语法:
struct silly { int x; int y; };
// ...
silly s = { 4, 5 };
德尔福?
不,没有确切的等价物。但是,您可以做一些类似的事情。
例如,如果
type
TTestRecord = record
A, B, C: integer;
D, E, F: boolean;
end;
和
var
R1, R2: TTestRecord;
那么你可以做
R1 := R2;
因此,您可以按值将一条记录分配给另一条记录。但是您不能在代码中指定“记录文字”。然而,相当接近它的东西很常见:如果你这样做
function TestRecord(A, B, C: integer; D, E, F: boolean): TTestRecord;
begin
result.A := A;
result.B := B;
result.C := C;
result.D := D;
result.E := E;
result.F := F;
end;
然后你可以写
R1 := TestRecord(1, 2, 3, true, false, true)
例如,这就是您如何处理TRect
和TPoint
. 有辅助函数Rect
和Point
在Classes.pas
.
顺便说一句:在常量声明中,您可以做更多事情:
const
R: TTestRecord = (A: 1; B: 2; C: 3; D: true; E: false; F: true);