Bereichsmethoden
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 9 von 56.
Ranges sind echte Collections, daher verfügen sie über denselben Werkzeugkasten, den Sie auch bei Arrays verwenden.
contains, count, first und last funktionieren alle direkt:
let r = 1...10
print(r.contains(5)) // true
print(r.count) // 10
print(r.first!, r.last!) // 1 10Die meisten Array-Methoden, die Sie verwendet haben, funktionieren ebenfalls. filter gibt ein Array zurück, da das Ergebnis des Filterns eines Bereichs selbst kein Bereich ist:
let evens = (1...10).filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6, 8, 10]Dasselbe gilt für reduce: Ranges verfügen darüber, und Sie werden es für schnelle Summen und Produkte nutzen.
Aufgabe
EinfachLies zwei Ganzzahlen (zwei Zeilen) ein: n und target. Betrachte den geschlossenen Bereich 1...n als deinen Datensatz.
Gib drei Zeilen aus:
true, wenntargetim Bereich liegt, andernfallsfalse- Das Produkt jedes Wertes im Bereich (
n!: Fakultät). Verwendereduce. - Die Werte im Bereich, die Vielfache von
3sind, verbunden mit,(oder eine leere Zeile, wenn keine zutreffen). Verwendefilter.
Für die Eingabe 5 / 3 lautet die Ausgabe:
true
120
3Probier es selbst
let n = Int(readLine()!)!
let target = Int(readLine()!)!
let r = 1...n
// TODO: contains(target), Produkt via reduce, Vielfache von 3 via filter
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimSuchen in StringsAufteilen und ZusammenfügenTeilstrings ersetzenRückblick – Benutzernamen prüfen4Mengen
Mengen erstellenVereinigung und SchnittmengeSubtraktion und symmetrische DifferenzTeilmenge und ObermengeWiederholung – Tag-Filter7Projekt – Gewohnheitstracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteBereichsmethodenBereiche in SwitchRückblick – Kalender-Raster5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerketten von Map, Filter und ReduceRückblick – WortstatistikÜbe selbstständig: Swift-Playground