Streams

Streams sao arrays preguiçosos. Eles são uma forma de representar uma sequência de elementos que ainda não foram calculados. Eles são úteis para representar sequências infinitas, ou para representar sequências que são muito grandes para serem armazenadas em memória.

Streams também são associadas com arquivos justamente por essa característica de processamento sob demanda.

ADT Stream

  • Stream.new(&block): Cria um novo stream a partir de um bloco que define a sequência de elementos.
  • Stream.from_array(array): Cria um novo stream a partir de um array.
  • stream.each(&block): Itera sobre os elementos do stream.
  • stream.map(&block): Aplica uma função a cada elemento do stream.
  • stream.filter(&block): Filtra os elementos do stream.
  • stream.take(n): Retorna os primeiros n elementos do stream.
  • stream.drop(n): Retorna o stream sem os primeiros n elementos.

Implementando um Stream

Referências

https://jsonmattingly.medium.com/writing-your-own-enumerables-in-ruby-18db4fa0e5fe https://ruby-doc.org/core-2.7.0/Enumerator/Lazy.html