(delphi11最新学习资料) Object Pascal 学习笔记---第10章第5节(实现类的枚举支持)

10.5 实现类的枚举支持

​ 在第3章中,我们已经看到了如何使用for-in循环作为经典for循环的替代方法。在那一节中,我描述了如何将for-in循环用于数组,字符串,集合和一些其他系统数据类型。只要类定义了枚举支持,就可以将这种循环应用于该类。尽管最明显的示例是包含元素列表的类,但从技术角度来看,此功能是相当开放的。

​ 要在Object Pascal 中支持枚举类中的元素,必须添加一个名为 GetEnumerator 的方法,该方法返回一个类(实际的枚举类),并使用 MoveNext 方法和 Current 属性定义这个枚举类——前者用于在元素之间导航,后者用于返回实际的元素。完成这个步骤以后(我将在第二个实际示例中向您展示如何完成),编译器就可以解析for-in循环,其中目标是我们类,单独元素必须是枚举器的Current属性的相同类型。一旦这样做了(稍后我将在一个实际例子中向你展示如何做),编译器就可以解析一个for-in循环,其中的目标是我们的类,而各个元素必须与枚举器的Current属性的类型相同。

​ 虽然说并不是严格必要,但把枚举器支持类作为嵌套类型来实现似乎是个好主意(这是第 7 章中涉及的一种语言特性),因为单独使用用于枚举的特定类型毫无意义。

​ 下面这个类是 NumbersEnumerator 示例的一部分,它存储了一系列数字(一种抽象集合),并允许对它们进行迭代。这是通过定义一个枚举器实现的,枚举器被声明为嵌套类型,并由 GetEnumerator 函数返回:

type
  TNumbersRange = class
  public
    type
      TNumbersRangeEnum = class
      private
        NPos: Integer;
        FR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值