【无标题】(delphi11最新学习资料) Object Pascal 学习笔记---第5章第3节(self关键字)

这篇具有很好参考价值的文章主要介绍了【无标题】(delphi11最新学习资料) Object Pascal 学习笔记---第5章第3节(self关键字)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

5.3.1 Self:记录背后的魔法

​ 假设您有两个记录,如MyRec1MyRec2,它们属于相同的记录类型。当调用一个方法并执行其代码时,该方法如何知道它使用这两个记录中的哪一个?当您定义一个方法时,编译器在幕后向方法添加一个隐藏的参数,即对您应用该方法的记录的引用。

​ 换句话说,对方法的上述调用被编译器转换为以下伪代码:

// 您编写的代码
MyRec.SetValue('Hello');
// 编译器生成的代码
SetValue(@MyRec, 'Hello');

​ 在这个伪代码中,@是地址运算符,用于获取记录实例的内存位置。

小贴士: 地址运算符在本章的高级部分末尾简要介绍了一下,标题为“指针是怎么样的?”

​ 调用代码是这样翻译的,但实际方法调用如何引用和使用这个隐藏参数呢?通过隐式使用一个名为 Self 的特殊标识符。因此,该方法的代码可以写成:

procedure TMyRecord.SetValue(NewString: string);
begin
  Self.FName := NewString;
end;

​ 虽然这段代码可以编译,但显式地使用 Self 并没有什么意义,除非你需要将记录作为一个整体来引用,例如将记录作为参数传递给另一个函数。这种情况更经常发生在类中,因为这些类的方法具有相同的隐藏参数和相同的 Self 标识符。

​ 使用显式 Self 参数可以使代码更可读(即使不是必需的)的一种情况是,当你在操作第二个相同类型的数据结构时,如同类型的第二个数据结构时,如测试另一个实例的值:

function TMyRecord.IsSameName(ARecord: TMyRecord): Boolean;
begin
  Result := Self.FName = ARecord.FName;
end;

小贴士: “隐藏的”Self参数在C++和Java中称为this,但在Objective-C(以及Object Pascal中)中称为Self文章来源地址https://www.toymoban.com/news/detail-829248.html

到了这里,关于【无标题】(delphi11最新学习资料) Object Pascal 学习笔记---第5章第3节(self关键字)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【IOT】学习资料

    随着科技的不断发展,物联网(IoT)已经成为了当今数字化时代的一部分。物联网将各种物理设备、传感器和互联网连接起来,为我们提供了巨大的数据流和智能化的应用。在这个庞大的生态系统中,物联网平台扮演着至关重要的角色,它们不仅可以连接和管理物联网设备,

    2024年02月20日
    浏览(53)
  • 以太坊入门学习资料

    区块链按照访问和管理权限分为公有链、联盟链和私有链。 公有链:完全开放,所有节点均可加入,代表链-比特币Bitcoin、以太坊Ethereum。 联盟链:有多个组织和机构共同管理,获得组织和机构许可的节点可以加入,代表链-超级账本Hyperledger Fabric。 私有链:获得集中管理者

    2024年02月02日
    浏览(58)
  • 自动驾驶最强学习资料

    资料说明和获取方式 本资料包是作者吐血整理的干货!目前为止应该是非常全的自动驾驶资料包!是作者五年自动驾驶算法工程师的 积累! 以上干货资料并不全是作者自己原创, 是作者作为五年自动驾驶算法工程的积累,一部分是参考其他的资料,一部分是作者自己的一些

    2024年03月13日
    浏览(84)
  • 机器学习 深度学习资料 资源machine learning

    Kaggle入门,看这一篇就够了 - 知乎 (zhihu.com) https://zhuanlan.zhihu.com/p/25686876 day1-1.什么是机器学习_哔哩哔哩_bilibili day1-1.什么是机器学习是10天学会机器学习从入门到深度学习的第1集视频,该合集共计62集,视频收藏或关注UP主,及时了解更多相关视频内容。 https://www.bilibili.com

    2024年02月21日
    浏览(54)
  • linux存储技术学习资料

    https://www.cnblogs.com/pengdonglin137/p/16525428.html Linux内核的I/O栈大图 知乎Linux I/O专栏1 Linux 块设备之Block Layer层架构演变 Linux VFS机制简析(一) Linux VFS机制简析(二) Linux Kernel文件系统写I/O流程代码分析(一) Linux Kernel文件系统写I/O流程代码分析(二)bdi_writeback linux问题调查工具

    2024年02月06日
    浏览(73)
  • 小程序的学习资料收集

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=1476434677599 3:设计指南:https://mp.weixin.qq.com/debug/wxadoc/design/index.html 4:设计资源下载:https://mp.weixin.qq.com/debug/wxadoc/design/#资源下载 5:微信小程序公测接入指南:http://

    2024年02月08日
    浏览(51)
  • DPDK相关学习资料汇总

    经常有新报道的童鞋问我,学习DPDK有哪些资料或者书籍可以看,今天我先来汇总一波,后面会持续更新: 1. DPDK官方网站:https://www.dpdk.org/和http://core.dpdk.org/doc/,官方网站提供DPDK的最新版本代码、文档和实例程序下载,同时也发布DPDK的最新版本更新和重大改进。 2. DPDK Git

    2024年02月08日
    浏览(63)
  • 空间分析专属 Python 学习资料

    空间数据分析能够帮助我们更好地理解地理空间中的模式和关系,从而为决策提供支持。例如,城市规划者可以使用空间数据分析来确定城市发展的最佳方向,环境科学家可以使用空间数据分析来评估污染的影响,而商业分析师可以使用空间数据分析来确定最佳的商业区位。

    2024年02月12日
    浏览(42)
  • ChatGPT学习相关资料整理

    ChatGPT能力起源:https://mp.weixin.qq.com/s/4l0ADjdsCxSVvBeVKxSqWA ChatGPT的发展历程:https://zhuanlan.zhihu.com/p/590655677 ChatGPT研究框架:https://mp.weixin.qq.com/s/Zx14jYl8Mc8Q6cqCgp9DnA ChatGPT带来的研究范式变革:https://mp.weixin.qq.com/s/60_h5biTOlBAa3Rt2tMn6A ChatGPT训练过程:https://www.zhihu.com/zvideo/15849416705078

    2023年04月22日
    浏览(51)
  • MPI学习网站和资料

    1. MPI 文档 (1)https://rookiehpc.org/mpi/docs/index.html (2)Open MPI v4.1.6 documentation 2. MPI练习题 (1)MPI Exercises (2)Tutorials · MPI Tutorial 3. 推荐书籍 Parallel Programming with MPI Using MPI - 3rd Edition Using Advanced MPI - 1st Edition 高性能计算之并行编程技术—— MPI并行程序设计

    2024年01月22日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包