Menu
Coddy logo textTech

Filter

Fait partie de la section Logique et Flux du Journey Swift de Coddy. Leçon 24 sur 56.

filter prend une closure de prédicat et renvoie un nouveau tableau contenant uniquement les éléments pour lesquels la closure a renvoyé true.

let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)                 // [2, 4, 6]

Le résultat conserve l'ordre d'origine. Le type du résultat correspond au type d'entrée, aucune transformation n'a lieu, seulement une sélection.

filter s'enchaîne naturellement avec map :

let big = nums
    .filter { $0 > 2 }
    .map { $0 * $0 }
print(big)                   // [9, 16, 25, 36]

Lisez chaque chaîne de haut en bas, tout comme un pipeline. Chaque étape produit un nouveau tableau ; rien ne modifie l'original.

challenge icon

Défi

Facile

Lisez deux lignes d'entrée :

  1. Une liste d'entiers séparés par des virgules
  2. Un entier min

Affichez, sur des lignes séparées :

  1. Les entiers strictement supérieurs à min, joints par , (ou vide si aucun ne correspond)
  2. Les carrés des entiers correspondants, joints par ,
  3. Le nombre d'entiers correspondants

Utilisez filter + map en chaîne. Ne faites pas deux itérations sur l'entrée.

Pour l'entrée 1,5,2,8,3,7 sur la ligne 1 et 4 sur la ligne 2, la sortie est :

5,8,7
25,64,49
3

Essayez vous-même

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!

// TODO: filtrer > min une fois, puis mapper vers les carrés ; imprimer les deux, puis compter
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Playground Swift