使用“工厂功能”:
TMyRecord = record valueX: integer; valueY: integer;end;function MyRecord(const AValueX,AValueY: integer): TMyRecord;begin result.valueX := AValueX; result.valueY := AValueY;end;var myrec: TMyRecord;begin myrec := MyRecord(1,2);end;
TMyRecord = record valueX: integer; valueY: integer; constructor Create(const AValueX,AValueY: integer);end;constructor TMyRecord.Create(const AValueX,AValueY: integer);begin self.valueX := AValueX; self.valueY := AValueY;end;var myrec: TMyRecord;begin myrec := TMyRecord.Create(1,2);end;
我觉得构造函数更加封装,但是在读代码时很容易让人困惑。它使它看起来像一个缺少免费电话的课程。还要更多输入…
你为什么要偏爱一个呢?
@H_404_14@解决方法 我喜欢上课,但是如果我要使用记录,我喜欢把它们尽可能地类似于类。所以我使用记录构造函数。但是有一个令人讨厌的记录和单位的错误。如果函数返回一个记录(使用方法),如果要访问这些方法,则会产生一个内部错误。您可以通过将其分配给另一个变量来规避这一点:
type TMyRec = record .. procedure X; end;function GetRec: TMyRec;procedure Test;var r1,r2 : TMyRec;begin r1 := GetRec; r1.X; // internal error r2 := r1; r2.X; // No internal error;@H_404_14@ @H_404_14@ 总结
以上是内存溢出为你收集整理的Delphi:记录构造函数vs工厂函数全部内容,希望文章能够帮你解决Delphi:记录构造函数vs工厂函数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)