Есть ли структура данных, подобная потоку, но слабая? - PullRequest
6 голосов
/ 27 марта 2011

Слабый, как в слабых ссылках.По сути, мне нужна последовательность чисел, где некоторые из них могут быть нераспределены, когда они больше не нужны.

Ответы [ 3 ]

5 голосов
/ 27 марта 2011

scalaz.EphemeralStream - это то, что вы хотите.

0 голосов
/ 28 марта 2011

Вы могли бы создать Iterable вместо Stream. Ваш Iterable должен предоставить метод iterator, который возвращает итератор с методами hasNext и next.

Когда вы перебираете Iterable, hasNext и next будут вызываться для генерации элементов по мере необходимости, но они нигде не хранятся (как Stream).

Простой пример:

class Numbers extends Iterable[Int] {
  def iterator = new Iterator[Int] {
    private var num = -1

    def hasNext = num < 99
    def next = { num += 1; num }
  }
}
0 голосов
/ 27 марта 2011

Представления предоставляют ленивую коллекцию, где каждое значение вычисляется так, как необходимо.

...