Recapitulação - Pipeline Builder
Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 43 de 56.
Desafio
MédioConstrua um pequeno pipeline de dados impulsionado por closures.
Leia três linhas:
- Um número inteiro
min - Um número inteiro
scale - Uma lista de inteiros separados por vírgula
Defina duas fábricas de closures:
makeFilter(min: Int) -> (Int) -> Boolcapturamine retorna um predicadon > minmakeScaler(by: Int) -> (Int) -> Intcapturabye retorna uma função que multiplica por ele
Em seguida, defina uma função pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] que filtra primeiro e depois transforma.
Imprima três linhas:
- Os números que sobreviveram ao filtro, unidos por
, - Os mesmos números após o escalonamento, unidos por
, - A soma dos valores escalonados
Para a entrada 5 / 3 / 2,7,3,8,9, a saída é:
7,8,9
21,24,27
72Experimente você mesmo
let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: makeFilter / makeScaler retornando closures; pipeline(_:filter:transform:);
// depois imprima os filtrados, os escalonados e a soma dos escalonados
Todas as lições de Lógica e Fluxo
1Strings a Fundo
Contagem e ÍndicesCase e TrimBusca em StringsDivisão e JunçãoSubstituindo SubstringsRecapitulação - Verificação de Nome de Usuário4Conjuntos
Criando ConjuntosUnião e InterseçãoSubtração e Diferença SimétricaSubconjunto e SuperconjuntoRecapitulação - Filtro de Tags7Projeto - Monitor de Hábitos
Visão Geral do ProjetoMarcar como Concluído10Projeto - Mecanismo de Quiz
Visão Geral do ProjetoFazer Perguntas2Intervalos e Strides
Fechado vs Meio-AbertoStrideMétodos de IntervaloIntervalos no SwitchRecapitulação - Grade de Calendário5Funções de Ordem Superior Parte 1
MapFilterReduceEncadeando map, filter, reduceRecapitulação - Estatísticas de Palavras8Closures
Fundamentos de ClosuresTrailing ClosuresCapturando ValoresRetornando ClosuresHigher-Order PersonalizadasRecapitulação - Pipeline Builder