Le Pas
Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 8 sur 56.
Une plage avance d'un pas à la fois. Lorsque vous souhaitez une taille de pas différente, ou pour compter à rebours, utilisez stride.
Deux variantes : stride(from:to:by:) s'arrête avant la deuxième valeur (semi-ouvert), stride(from:through:by:) peut l'inclure (fermé) :
for n in stride(from: 0, to: 10, by: 2) {
print(n)
}
// 0, 2, 4, 6, 8for n in stride(from: 10, through: 0, by: -2) {
print(n)
}
// 10, 8, 6, 4, 2, 0L'argument by: doit avoir le bon signe : positif pour compter vers le haut, négatif pour compter vers le bas. En cas d'incohérence, la boucle s'exécute zéro fois.
Défi
FacileLisez trois entiers (trois lignes) : start, end, step. Le pas (step) peut être positif ou négatif. La plage est inclusive aux deux extrémités (utilisez stride(from:through:by:)).
Affichez :
- Les valeurs de la progression, jointes par
, - Le nombre de valeurs produites
Pour l'entrée 0 / 10 / 3, la sortie est :
0,3,6,9
4Pour l'entrée 10 / 0 / -2, la sortie est :
10,8,6,4,2,0
6Aide-mémoire
Utilisez stride lorsque vous avez besoin d'un pas personnalisé ou pour décompter.
stride(from:to:by:) — semi-ouvert (exclut la valeur de fin) :
for n in stride(from: 0, to: 10, by: 2) { }
// 0, 2, 4, 6, 8stride(from:through:by:) — fermé (inclut la valeur de fin) :
for n in stride(from: 10, through: 0, by: -2) { }
// 10, 8, 6, 4, 2, 0La valeur by: doit correspondre à la direction : positive lors d'un comptage croissant, négative lors d'un décomptage. Une inadéquation produit zéro itération.
Essayez vous-même
let start = Int(readLine()!)!
let end = Int(readLine()!)!
let step = Int(readLine()!)!
// TODO: stride(from:through:by:), joindre avec une virgule, puis afficher le nombre d'éléments
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
1Les chaînes de caractères en profondeur
Comptage et indicesCasse et nettoyageRecherche dans les chaînesDécoupage et jointureRemplacement de sous-chaînesRécapitulatif - Vérification du nom d'utilisateur4Ensembles
Création d'ensemblesUnion et intersectionSoustraction et différence symétriqueSous-ensemble et sur-ensembleRécapitulatif - Filtre de tags7Projet - Suivi d'habitudes
Aperçu du projetMarquer comme terminé10Projet - Moteur de quiz
Présentation du projetPoser des questions2Intervalles et Pas
Fermé vs Semi-ouvertLe PasMéthodes d'intervalleIntervalles dans un SwitchRécapitulatif - Grille de calendrier5Fonctions d'ordre supérieur, Partie 1
MapFilterReduceChaînage de map, filter, reduceRécapitulatif - Statistiques de mots