0%
Programação funcional em coleções — Capítulo 14

Capítulo 14 — Programação funcional em coleções

Parte 1A — Aprender Dart · Capítulo 14 de 62 · 6 h

Capítulo 14 — Programação funcional em coleções

Nível: intermediário Duração estimada: 6 h Pré-requisitos: capítulo 05 (laços), capítulo 06 (coleções), capítulo 07 (funções), capítulo 13 (exceções) O que você saberá fazer ao final: transformar, filtrar, ordenar e resumir qualquer lista de jogadores, inimigos ou itens de inventário em poucas linhas declarativas, sem escrever um único laço for.


14.0 — Objetivos do capítulo

Ao final deste capítulo, você será capaz de:

  • distinguir o estilo imperativo (como fazer) do estilo declarativo (o que obter);
  • escrever uma função anônima e uma função de seta para passá-las a um método;
  • percorrer uma coleção com forEach();
  • transformar uma coleção com map(), inclusive mudando de tipo;
  • explicar o que é um Iterable e por que toList() costuma ser obrigatório;
  • filtrar uma coleção com where();
  • procurar um elemento com firstWhere(), lastWhere(), singleWhere() e indexWhere();
  • responder a uma pergunta de sim ou não com any(), every() e contains();
  • reduzir uma coleção a um único valor com reduce() e fold();
  • escolher entre reduce() e fold() com conhecimento de causa;
  • ordenar uma lista com sort() e escrever um comparador;
  • usar compareTo() em números e em textos;
  • ordenar objetos por pontuação, por nome e depois por vários critérios;
  • ordenar uma cópia sem modificar a lista original;
  • fatiar uma coleção com take() e skip();
  • achatar listas aninhadas com expand();
  • remover duplicatas com toSet();
  • montar uma coleção em texto com join();
  • usar o spread operator ... e sua versão nullable ...?;
  • escrever um if e um for diretamente dentro de uma lista literal;
  • encadear várias operações em uma única expressão legível;
  • decidir, com critérios claros, quando é melhor voltar a um laço for.

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!