(delphi11最新、最权威、最系统、最全面的学习资料) Object Pascal 学习笔记---第3章第4节(For-in语句)

Object Pascal 学习笔记,Delphi 11 编程语言的完整介绍 作者: Marco Cantu 笔记:豆豆爸

3.4.1 For-in 循环

Object Pascal具有专门的循环结构,用于循环访问列表或集合的所有元素,称为for-in(其他编程语言称为for each)。在这个循环中,该循环作用于数组、列表、字符串或其他类型容器中的每个元素。与C#不同,Object Pascal不需要实现IEnumerable接口,尽管内部实现有些类似。

​ 让我们从一个非常简单的容器开始,即字符串,它可以被视为字符的集合。我们已经在上一节末尾看到了如何使用for循环操作字符串的所有元素。通过以下基于字符串的for-in循环,其中Ch变量依次接收字符串的每个元素,可以获得完全相同的效果:

var
  S: string;
  Ch: Char;
begin
  S := 'Hello world';
  for Ch in S do
    Show(Ch);

该代码片段也是ForTest示例的一部分。与使用传统for循环相比,使用for-in循环的优势在于您无需记住字符串的第一个元素以及如何提取最后一个元素的位置。这个循环更容易编写、维护,并且具有相类似的效率。

​ 与传统的for循环一样,for-in循环也可以从使用内联变量声明中受益。我们可以使用以下等效代码重写上述代码:

var
  S: string;
begin
  S := 'Hello world';
  for var Ch: Char in S do
    Show(Ch);

for-in循环可用于访问多种不同数据结构中的元素,包括:

  • 字符串中的字符(参见前面的代码片段)
  • 集合中的活动值
  • 静态或动态数组中的项,包括二维数组(在第5章中介绍)
  • 具有GetEnumerator支持的类引用的对象,包括许多预定义的对象,例如字符串列表中的字符串、各种容器类的元素、窗体拥有的组件等。如何实现这一点将在第10章中讨论。

​ 现在在本书的这一部分覆盖这些高级用法模式可能有点困难,因此我将在本书的后面回到这个循环的示例。

注解:在某些语言(如 JavaScript)中,for-in 循环的运行速度非常慢,因此声名狼藉。但在 Object Pascal 中情况并非如此,它与标准 for 循环所需的时间差不多。为了证明这一点,我在 LoopsTest 示例中添加了一些计时代码,首先创建一个包含 3000 万个元素的字符串,然后用这两种类型的循环对其进行扫描(每次迭代都进行一个非常简单的操作)。在速度上,与传统 for 循环的差异约为 10%(在我的 Windows 机器上为 62 毫秒对 68 毫秒)。

  • 12
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值