LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

イテレータ

イテレータ()とは、プログラミング言語において配列やそれに類似するデータ構造の各要素に対する繰返し処理の抽象化である。実際のプログラミング言語では、オブジェクトまたは文法などとして現れる。反復するためのものの意味で反復子(はんぷくし)と訳される。繰返子(くりかえし)という一般的ではない訳語もある。C++では、STLが外部イテレータの枠組みを定義している。この枠組みはポインタと互換性を持つよう定められているため、ポインタをイテレータとして利用することができる。なお、イテレータの種類によって用いることの出来る演算子に違いがある。例えば、vectorコンテナのイテレータとlistコンテナのそれは共にインクリメントを用いて次の要素を指すことが出来るが、足し算は前者でのみ定義されている。これはlistコンテナの要素が、前後の要素へのポインタしか保持していないため n 個先の要素への移動が定数時間で出来ないからである。Delphiでは、バージョン2005よりcodice_1構文によるイテレータがある。ユーザによるイテレータはcodice_2メソッドやcodice_3プロパティを任意のクラス等に実装することで定義でき、型に厳格なPascal系言語ながらこれらを実装するだけでcodice_1により認識されるというダックタイピングにも似た仕組みとなっている。Javaでは、Iteratorインタフェイス族を実装するオブジェクトが外部イテレータとなる。Perlには、codice_5、codice_6 といった繰り返しのキーワードがある。他に、Tie機能(変数操作のオーバーロード)でユーザーデータに対するイテレータを定義できる。ではIteratorインタフェイスを実装することにより、任意のイテレータを定義することができ、codice_5、codice_8 といったキーワードでイテレータを簡単に利用することができる。また、大抵のオブジェクトにはあらかじめイテレータが実装されている。Pythonは次の要素を返すcodice_9メソッドを持つオブジェクトを外部イテレータとして使う。コンテナオブジェクトのcodice_10メソッドがイテレータを返す。(便宜上、イテレータのcodice_10は自身を返す)通常のプログラミングでは、codice_12のように直接呼ぶのではなく、組込み関数iterを使ってcodice_13のようにする。同様に、通常の用法で呼ぶことを前提とした場合はcodice_9ではなくcodice_15を使う。for文(Foreach文)はイテレータが使える場合はイテレータを使うが、そうでないコンテナオブジェクトに対しては直接、codice_16メソッドにより要素を取得し繰返しを実行する。Pythonはfor文を使うから内部イテレータである、と考える者がいるようだが誤解である。また、Pythonには一種のコルーチンを記述できるジェネレータもある。ジェネレータはイテレータを返す関数で、yield文により、codice_9で実行される手続きを次々と記述できる。Rubyでは、Arrayなどのコンテナオブジェクトが、eachなどのイテレートするメソッドを持っている内部イテレータである。メソッド呼出しの直後に codice_18 という書式で「ブロック」を書くと、その中の手続きが繰返し実行される。「ブロック付きメソッド」(あるいは、「ブロック付きメソッド呼び出し」)と言い、これをイテレータとも呼ぶ。ブロックを付けて呼ばれたメソッド中でyieldを実行すると、ブロックの中の手続きが実行される。Pythonのジェネレータと同じyieldというキーワードで、コードの見た目も似たものになるが、具体的な働きは全く異なることに注意。イテレータは、.NET Frameworkでは列挙子と呼ばれ、codice_19インターフェイスによって表している。codice_19インターフェイスはcodice_21メソッドを定義しており、このメソッドを使用することにより次の要素に進むと同時に、コレクションの末尾に到達するかどうかを判定する。codice_3プロパティを使用することによってコレクション内部の要素を取得する。コレクションの最初の要素に戻す方法としてcodice_23メソッドを使用する。列挙子を得るにはcodice_24インターフェイスに定義しているcodice_25メソッドを使用する。一般的にコレクション クラスはこのインターフェイスを実装する。codice_25を呼び出さず、codice_5を代わりに使用することもできる。両方のインターフェイスは、.NET 2.0でジェネリック (codice_28) として拡張された。C# 2.0C# 2.0は生成プログラムをサポートする。codice_19またはcodice_24を返すメソッド内でのみcodice_31ステートメントを使用できる。コンパイラが適切なインターフェイスを実装する新しいクラスに変えてオブジェクトを返している。Visual BasicD言語では、標準ライブラリにレンジ(Range)というイテレータが定義されており、規定されたインタフェースを持っているオブジェクトなら何でもレンジとして扱うことができる。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。