问题标签 [seekableiterator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
875 浏览

php - PHP:实现 SeekableIterator 接口

我目前正在编写一个实现 SeekableIterator 接口的类并且遇到了问题。我有两个正在使用的内部数组,并希望允许从类外部对它们进行迭代。有没有一种简单的方法可以在不首先合并类中的两个数组的情况下做到这一点?这是我正在尝试做的一个简单示例:

0 投票
2 回答
448 浏览

php - PHP: SeekableIterator::seek()

如果我想实现 seek() 来完成 SeekableIterator 接口,如果搜索的位置无效,我是否应该在内部恢复到旧位置?像这样:

0 投票
0 回答
190 浏览

php - PHP:循环通过 SeekableIterator

我从事有关解决云存储的 php 项目,例如 AWS EC2。

我尝试返回结果看起来像SplFileInfoDirectoryIterator

首先,我输入FileInfo模拟SplFileInfo

二、我打字Directory模拟DirectoryIterator

那么问题是我应该在哪里等待FileInfo,在每个被调用时立即创建一个对象是否合适current()?还是立即打开所有对象__construct()

为什么DirectoryIterator实现SplFileInfo,只是为了代码提示?

0 投票
1 回答
624 浏览

php - PHP SeekableIterator:捕获 OutOfBoundsException 或检查 valid() 方法?

所以我不确定这是否是 PHP 的错误设计,或者是否有一个可以理解的逻辑来处理同一接口的不一致结果。

SeekableIterator 接口有两种方法 (seekvalid),它们或者相互冲突,或者应该相互一致地工作,但我看到了两者。

该接口的文档说seek应该抛出类 OutOfBoundsException 的异常,但这似乎否定了valid除非迭代器位置valid在抛出异常(显然必须被捕获)之前更新(使返回 false)的有用性。

三个测试示例

示例 1。

实现 SeekableIterator 的自定义类,由文档中的示例提供:

班上:

示例 1. 测试:

测试 1 输出:

示例 2:

使用本机 ArrayIterator::seek

测试 2 代码:

测试 2 输出:

示例 3:

使用本机 DirectoryIterator::seek

测试 3 代码:

测试 3 输出:

那么,如何合理地期望知道是否在之后使用valid()来确认有效位置,seek($position)同时还预期seek()可能会抛出异常而不是更新位置,从而valid()返回 true?