gpt4 book ai didi

delphi - 语言问题:类型为匿名记录的记录字段?

转载 作者:行者123 更新时间:2023-12-03 18:25:41 27 4
gpt4 key购买 nike

我仍在学习Delphi / OP,偶然发现了以下(简化的)代码,这是一本古老的Delphi书中练习的一部分。

type
TMyRec = record
FField1: Integer;
FField2: String;

FAnonRec: record
FAnonField: Integer;
end;

FField3: Boolean;
end;


我的主要问题是:
1.用语言来称呼 FAnonRec是什么?我怎么指称它?类似于匿名记录类型的记录字段...?只是构造类型...? -我用Google搜索了一段时间,但一直得到有关古希腊历史的结果...我发现最接近的是 this error explanation

进一步的问题:
2.通常,这种类型的构造称为什么(在那时然后在那里而不是使用预先声明的命名类型的“创建类型”)? -不管是在示例中还是在 var块中使用它,甚至不使用任何记录。
3. Delphi中的“结构”工具仅显示 FField1FField2

-但是“类资源管理器”工具会显示整个记录:

-有人知道为什么吗?
4.第3点,以及这是一本旧书的事实,以及我很难找到有关它的更多信息这一事实,使我想知道这种结构是否过时/陈旧?

最佳答案

我将其称为“嵌套记录类型定义”。它自Turbo Pascal IIRC诞生以来就存在,并且与最近(至少在本世纪之前)引入的“匿名方法”无关,这是一个更加复杂的野兽,因为它具有一些执行上下文。

我看不出有什么理由会被视为过时或灰心。从代码的角度来看,这是一个完美的有效结构,因为它在逻辑父字段中收集了一些字段,因此这是有意义的。当然,如果希望独立访问它,则值得使用专用的类型定义。性能将是相同的,如果使用YAGNI(更少的键入,整个记录可以一目了然),它将更加方便。

因此,您可以从编写此类嵌套记录开始,然后在需要时定义一个专用类型-例如如果添加一些方法可以使您的代码更具可读性和可维护性。实际上,在类型定义中使用嵌套记录可以减少代码库中最终的代码更改,因为稍后添加显式类型定义不会破坏从现有代码访问其成员的方式。

请注意,有一个RTTI作为独立记录,以“主”记录(类似于'__TMyRec_FAnonRec'之类)命名。因此,从RTTI的角度来看,它不是匿名的。 ;)

关于delphi - 语言问题:类型为匿名记录的记录字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54157907/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com