Range-Methoden
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
3Spickzettel
Bereiche (Ranges) entsprechen Collection und unterstützen gängige Collection-Methoden:
let r = 1...10
r.contains(5) // true
r.count // 10
r.first! // 1
r.last! // 10filter auf einem Bereich gibt ein Array zurück:
let evens = (1...10).filter { $0 % 2 == 0 }
// [2, 4, 6, 8, 10]reduce funktioniert direkt auf Bereichen:
let product = (1...5).reduce(1) { $0 * $1 } // 120
let sum = (1...5).reduce(0, +) // 15Probier 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 TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken