Streams
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 primeirosnelementos do stream.stream.drop(n): Retorna o stream sem os primeirosnelementos.
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