0Pricing
Dart Academy · Aula

Iteráveis Preguiçosos e Geradores com sync*

Produza valores sob demanda.

Iteráveis Preguiçosos e Geradores com sync* é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.

O Que Significa Preguiçoso

Um iterável preguiçoso não calcula seus valores até que você realmente os solicite. O trabalho acontece sob demanda, não todo de uma vez. 🦥

Iteráveis São Preguiçosos

Métodos como map e where retornam um Iterable preguiçoso. Nada é executado até que você itere ou chame toList.

var it = [1, 2, 3].map((n) {
  print('seen $n');
  return n * 2;
});

Nada é Executado Ainda

Enquanto você não consumir esse iterável, o corpo de map nunca será executado. A avaliação preguiçosa permite descrever o trabalho e adiar o custo.

for (var x in it) print(x); // now it runs

Por Que a Avaliação Preguiçosa Ajuda

A avaliação preguiçosa economiza trabalho quando você precisa de apenas alguns resultados. Combinada com take, permite parar cedo e ignorar o restante.

var first2 = it.take(2).toList();

Conheça os Geradores sync*

Uma função sync* é um gerador que cria um Iterable preguiçoso. Ela produz valores um de cada vez, conforme são solicitados.

Iterable<int> count(int n) sync* {
  for (var i = 1; i <= n; i++) yield i;
}

A Palavra-chave yield

Dentro de um gerador, yield devolve um valor ao chamador e pausa até que o próximo valor seja necessário.

print(count(3).toList()); // [1, 2, 3]

Sequências Infinitas

Como os valores são preguiçosos, um gerador pode descrever com segurança uma sequência infinita, desde que você use apenas uma parte finita dela.

Iterable<int> naturals() sync* {
  var i = 0;
  while (true) yield ++i;
}

Obtendo uma Parte Finita

Combine um gerador infinito com take para obter apenas o que precisa. O laço para no instante em que sua parte está preenchida.

print(naturals().take(5).toList()); // [1, 2, 3, 4, 5]

yield* Encaminha Valores

Use yield* para emitir todos os valores de outro iterável ou gerador. Ele incorpora uma sequência à sequência atual.

Iterable<int> both() sync* {
  yield* count(2);
  yield* count(2);
}

Geradores em vez de Criar Listas

Um gerador evita criar uma lista completa na memória. Você transmite os valores, mantendo sequências grandes ou intermináveis econômicas em memória.

sync* vs async*

Use sync* para iteráveis preguiçosos síncronos. Sua versão assíncrona, async*, produz um Stream para sequências de eventos assíncronos.

Verificação Rápida

Teste sua compreensão sobre geradores.

Recapitulação

Iteráveis são preguiçosos, e os geradores sync* produzem valores sob demanda. Isso permite modelar até sequências infinitas de forma econômica. 🌟

Perguntas Frequentes

A aula “Iteráveis Preguiçosos e Geradores com sync*” é grátis?

Sim — o texto completo de “Iteráveis Preguiçosos e Geradores com sync*” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.

O que vou aprender em “Iteráveis Preguiçosos e Geradores com sync*”?

Produza valores sob demanda. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Dart Academy?

Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Iteráveis Preguiçosos e Geradores com sync*”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Dart Academy?

Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Funções de Ordem Superior e Currying
  2. fold, reduce e expansão
  3. Iteráveis Preguiçosos e Geradores com sync*
  4. Composição de Pipelines de Funções Puras
← Voltar para Dart Academy