PredictiveIteratorIterator 的一种特殊类型,它可以知道它将(仍然)生成多少个值,无需实际生成这些值。

Iterator 角色的 API 的主要新增内容是 count-only 方法,该方法应返回 Iterator 仍然能够生成的值的数量。

另一个新增内容是 bool-only 方法,它应返回一个 Bool,指示 Iterator 是否仍然能够生成值(即尚未耗尽)。默认情况下,这是对 count-only 方法调用结果的布尔化。

方法§

方法 count-only§

method count-only(--> Int:D{ ... }

预计它将返回迭代器仍然可以生成的值的数量,无需实际生成它们。返回的数字必须针对已提取的项目进行调整,以便可以在部分消耗的 Iterator 上调用该方法。

它将用于仅需要迭代器值数量的情况,例如,当调用 .elems 方法时。

重要提示:预计实现此方法的 Iterator 可以返回该数字,无需生成任何值。换句话说,预计类的用户在调用此方法后仍能够 pull-one,并最终接收与该方法的返回值指示的值一样多的值。

方法 bool-only§

默认为调用 count-only 方法的结果的布尔化。如果有一种更快的办法来找出迭代器是否能够生成任何值,则应该实现它。

method bool-only(--> Bool:D{ self.count-only.Bool }

类型图§

PredictiveIterator 的类型关系
raku-type-graph PredictiveIterator PredictiveIterator Iterator Iterator PredictiveIterator->Iterator

展开上方的图表