有没有办法像在C和C ++中那样为Delphi记录执行聚合赋值? 即是否存在以下等效语法:
struct silly { int x; int y; };
// ...
silly s = { 4, 5 };
对于Delphi?
答案 0 :(得分:2)
不,没有确切的等价物。但是,你可以做一些类似的事情。
例如,如果
type
TTestRecord = record
A, B, C: integer;
D, E, F: boolean;
end;
和
var
R1, R2: TTestRecord;
然后你可以做
R1 := R2;
因此,您可以按值将一条记录分配给另一条记录。但是你不能在代码中指定'record literal'。然而,相当接近它的东西很常见:如果你做了
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);