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édioCrie um pequeno pipeline de dados orientado por closures.
Leia três linhas:
- Um inteiro
min - Um inteiro
scale - Uma lista de inteiros separados por vírgulas
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
Depois, 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 passaram pelo filtro, unidos com
, - Os mesmos números depois da escala, unidos com
, - A soma dos valores escalados
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 BuilderPratique por conta própria: Playground de Swift