Delphi:记录构造函数vs工厂函数

Delphi:记录构造函数vs工厂函数,第1张

概述那么初始化记录的首选方式是什么? 使用“工厂功能”: TMyRecord = record valueX: integer; valueY: integer;end;function MyRecord(const AValueX, AValueY: integer): TMyRecord;begin result.valueX := AValueX; result.valu 那么初始化记录的首选方式是什么?

使用“工厂功能”:

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工厂函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1280348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存