问题标签 [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.
php - PHP:实现 SeekableIterator 接口
我目前正在编写一个实现 SeekableIterator 接口的类并且遇到了问题。我有两个正在使用的内部数组,并希望允许从类外部对它们进行迭代。有没有一种简单的方法可以在不首先合并类中的两个数组的情况下做到这一点?这是我正在尝试做的一个简单示例:
php - PHP: SeekableIterator::seek()
如果我想实现 seek() 来完成 SeekableIterator 接口,如果搜索的位置无效,我是否应该在内部恢复到旧位置?像这样:
php - PHP:循环通过 SeekableIterator
我从事有关解决云存储的 php 项目,例如 AWS EC2。
我尝试返回结果看起来像SplFileInfo
和DirectoryIterator
。
首先,我输入FileInfo
模拟SplFileInfo
二、我打字Directory
模拟DirectoryIterator
那么问题是我应该在哪里等待FileInfo
,在每个被调用时立即创建一个对象是否合适current()
?还是立即打开所有对象__construct()
?
为什么DirectoryIterator
实现SplFileInfo
,只是为了代码提示?
php - PHP SeekableIterator:捕获 OutOfBoundsException 或检查 valid() 方法?
所以我不确定这是否是 PHP 的错误设计,或者是否有一个可以理解的逻辑来处理同一接口的不一致结果。
SeekableIterator 接口有两种方法 (seek
和valid
),它们或者相互冲突,或者应该相互一致地工作,但我看到了两者。
该接口的文档说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?