0

誰かがジェネレーター、列挙子、反復子の用語の定義を提供できますか? さまざまな言語がこれらを任意に使用しているようで、正確な違いを知りたいです。

4

2 に答える 2

1

列挙子は、値にラベルを付ける方法です。整数のコンテナーがある場合は、可能な値の列挙を定義できます。数値よりも名前付きの値を覚える方が簡単です。たとえば、知っている全員に名前がなく、代わりに一意の番号が与えられていると想像してください。覚えるのが難しくなります。

イテレーターは、コンテナーをトラバースできるようにするオブジェクトです。それを段階的に繰り返します。ステップスルーが簡単なコンテナー (連続配列など) もありますが、そうでないコンテナーもあります (各要素がメモリ全体にランダムに散在するリンクリストや、データをステップスルーする順序が異なる可能性があるバイナリツリーなど)。 )。イテレーターを使用すると、このような詳細を気にせずにコンテナーをトラバースできます。

ジェネレーターに関しては、私はそれらに精通していないので、ウィキペディアからこの引用を残します。

コンピューター サイエンスでは、ジェネレーターは、ループの反復動作を制御するために使用できる特別なルーチンです。ジェネレーターは、パラメーターを持ち、呼び出すことができ、一連の値を生成するという点で、配列を返す関数に非常に似ています。ただし、すべての値を含む配列を作成して一度に返すのではなく、ジェネレーターは一度に 1 つずつ値を生成します。これにより、必要なメモリが少なくなり、呼び出し元が最初のいくつかの値の処理をすぐに開始できるようになります。つまり、ジェネレーターは関数のように見えますが、イテレーターのように動作します。

于 2013-01-04T17:34:16.867 に答える
0

ウィキペディアは、完全に優れた一般的な定義を提供しています。

つまり、反復子は、ループを使用して繰り返し読み取ることができるクラスです。ジェネレーターは、値を 1 つずつ返すことによってイテレーターのように機能する関数です。列挙子は、可能な値のリストを含むデータ型であり、変数定義で使用して、これらの値の 1 つだけを強制的に含めることができます。

私の知る限り、これらの用語の使用法は言語間でかなり一貫していますが、構文は異なります (明らかに)。あなたを混乱させたのは何を見たことがありますか?

于 2013-01-04T17:31:49.373 に答える