問題タブ [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 インターフェイスを実装するクラスを作成していて、問題が発生しました。使用している 2 つの内部配列があり、クラスの外部から両方を反復できるようにしたいと考えています。最初にクラス内で 2 つの配列をマージせずにこれを行う簡単な方法はありますか? これが私がやろうとしていることの簡単な例です:

0 投票する
2 に答える
448 参照

php - PHP: SeekableIterator::seek()

SeekableIterator インターフェイスを完成させるために seek() を実装したい場合、シークされた位置が無効な場合、内部的に古い位置に戻す必要がありますか? このような:

0 投票する
0 に答える
190 参照

php - PHP: SeekableIterator をループする

AWS EC2 などのクラウド ストレージの解決に関する php プロジェクトに取り組んでいます。

と のような結果を返そうとしSplFileInfoますDirectoryIterator

まず、FileInfoモックするために入力しましたSplFileInfo

Directory第二に、私はモックするために入力しましたDirectoryIterator

次に、問題は私が istancing する必要がある場所です。呼び出されるFileInfoたびにオブジェクトをインスタンス化するのは適切current()ですか? またはすべてのオブジェクトをインスタント化します__construct()か?

そして、コードヒントのためだけに をDirectoryIterator実装するのはなぜですか?SplFileInfo

0 投票する
1 に答える
624 参照

php - PHP SeekableIterator : OutOfBoundsException をキャッチするか、valid() メソッドをチェックしますか?

したがって、これが PHP のバグのある設計なのか、それとも同じインターフェイスで一貫性のない結果を処理するための理解されたロジックがあるのか​​はわかりません。

SeekableIterator インターフェイスには 2 つのメソッド (seekおよびvalid) があり、これらは互いに競合しているか、互いに一貫して動作するはずですが、両方とも表示されます。

インターフェイスのドキュメントにはseek、クラス OutOfBoundsException の例外をスローする必要があると記載されていますが、これは、例外をスローする前validにイテレーターの位置が更新されない限りvalid(明らかに false を返すように)、の有用性を無効にしているようです (これは明らかにキャッチする必要があります)。

3 つのテスト例

例 1。

ドキュメントの例で提供されているように、SeekableIterator を実装するカスタム クラス:

クラス:

例 1. テスト:

テスト 1 の出力:

例 2:

ネイティブ ArrayIterator::seek の使用

テスト 2 コード:

テスト 2 の出力:

例 3:

ネイティブ DirectoryIterator::seek の使用

テスト 3 コード:

テスト 3 の出力:

valid()では、有効な位置を確認するために使用するかどうかを合理的に知るにはどうすればよいでしょうか。また、位置を更新する代わりに Exception がスローされる可能性がseek($position)あることを予測して、true を返すのでしょうか?seek()valid()