Example13.2

「Example13.2」の編集履歴(バックアップ)一覧はこちら

Example13.2 - (2009/08/22 (土) 01:56:38) の1つ前との変更点

追加された行は緑色になります。

削除された行は赤色になります。

**13.2 Constructing Iterators Concrete iterators need to provide implementations for the two abstract methods next and hasNext in class Iterator. The simplest iterator is Iterator.empty which always returns an empty sequence: 具体的なイテレーターは、クラスIteratorのふたつの抽象メソッドnextとhasNextの実装を提供する必要があります。もっとも単純なイテレーターは、常に空の列を返すIterator.emptyです。 object Iterator { object empty extends Iterator[Nothing] { def hasNext = false def next = error("next on empty iterator") } A more interesting iterator enumerates all elements of an array. This iterator is constructed by the fromArray method, which is also defined in the object Iterator もっと面白みのあるイテレーターは、配列のすべての要素を列挙するものです。このイテレーターはオブジェクトIteratorで定義されているfromArrayメソッドで構築されます。 def fromArray[A](xs: Array[A]) = new Iterator[A] { private var i = 0 def hasNext: Boolean = i < xs.length def next: A = if (i < xs.length) { val x = xs(i); i += 1; x } else error("next on empty iterator") } Another iterator enumerates an integer interval. The Iterator.range function returns an iterator which traverses a given interval of integer values. It is defined as follows. 他のイテレーターとして、範囲内の整数を列挙するものがあります。Iterator.range関数は与えられた範囲の整数値をたどるイテレーターを返します。 object Iterator { def range(start: Int, end: Int) = new Iterator[Int] { private var current = start def hasNext = current < end def next = { val r = current if (current < end) current += 1 else error("end of iterator") r } } } All iterators seen so far terminate eventually. It is also possible to define iterators that go on forever. For instance, the following iterator returns successive integers from some start value (Due to the finite representation of type int, numbers will wrap around at 2^31). ここまで見てきたイテレーターはいずれは終わりに達しますが、永遠に続くイテレーターを定義することも可能です。たとえば、以下のイテレーターは初期値から続く整数を返します(int型が有限の表現であるため、2^31で数は周回します)。 def from(start: Int) = new Iterator[Int] { private var last = start 1 def hasNext = true def next = { last += 1; last } } ---- #comment
**13.2 Constructing Iterators Concrete iterators need to provide implementations for the two abstract methods next and hasNext in class Iterator. The simplest iterator is Iterator.empty which always returns an empty sequence: 具体的なイテレーターは、クラスIteratorのふたつの抽象メソッドnextとhasNextの実装を提供する必要があります。もっとも単純なイテレーターは、常に空の列を返すIterator.emptyです。 object Iterator { object empty extends Iterator[Nothing] { def hasNext = false def next = error("next on empty iterator") } A more interesting iterator enumerates all elements of an array. This iterator is constructed by the fromArray method, which is also defined in the object Iterator もっと面白みのあるイテレーターは、配列のすべての要素を列挙するものです。このイテレーターはオブジェクトIteratorで定義されているfromArrayメソッドで構築されます。 def fromArray[A](xs: Array[A]) = new Iterator[A] { private var i = 0 def hasNext: Boolean = i < xs.length def next: A = if (i < xs.length) { val x = xs(i); i += 1; x } else error("next on empty iterator") } Another iterator enumerates an integer interval. The Iterator.range function returns an iterator which traverses a given interval of integer values. It is defined as follows. 他のイテレーターとして、範囲内の整数を列挙するものがあります。Iterator.range関数は与えられた範囲の整数値をたどるイテレーターを返します。 object Iterator { def range(start: Int, end: Int) = new Iterator[Int] { private var current = start def hasNext = current < end def next = { val r = current if (current < end) current += 1 else error("end of iterator") r } } } All iterators seen so far terminate eventually. It is also possible to define iterators that go on forever. For instance, the following iterator returns successive integers from some start value (Due to the finite representation of type int, numbers will wrap around at 2^31). ここまで見てきたイテレーターはいずれは終わりに達しますが、永遠に続くイテレーターを定義することも可能です。たとえば、以下のイテレーターは初期値からずっと続く整数を返します(int型が有限の表現であるため、2^31で数は周回します)。 def from(start: Int) = new Iterator[Int] { private var last = start 1 def hasNext = true def next = { last += 1; last } } ---- #comment

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。