Ich bin ein wenig verwirrt über die Antwort, die Xcode mir auf dieses Experiment im Swift Programming Language Guide gibt:
// Use a for-in to iterate through a dictionary (experiment)
let interestingNumbers = [
"Prime": [2, 3, 5, 7, 11, 13],
"Fibonacci": [1, 1, 2, 3, 5, 8],
"Square": [1, 4, 9, 16, 25]
]
var largest = 0
for (kind, numbers) in interestingNumbers {
for number in numbers {
if number > largest {
largest = number
}
}
}
largest
Ich verstehe, dass beim Durchlaufen des Wörterbuchs die größte Zahl auf die Variable gesetzt wird largest
. Ich bin jedoch verwirrt darüber, warum Xcode sagt, dass dies largest
je nach Test fünfmal oder einmal oder dreimal eingestellt wird.
Wenn ich den Code durchschaue, sehe ich, dass er allein in "Prime" 6 Mal eingestellt werden sollte (2, 3, 5, 7, 11, 13). Dann sollte es alle Zahlen in "Fibonacci" überspringen, da diese alle kleiner als die größten sind, die derzeit von "Prime" auf 13 gesetzt ist. Dann sollte es auf 16 und schließlich 25 in "Quadrat" gesetzt werden, was insgesamt 8 Mal ergibt.
Vermisse ich etwas ganz Offensichtliches?
quelle
Ergebnis wäre
("Vorname", "Maninder") ("Nachname", "Singh") ("Adresse", "Chandigarh")
quelle
Dies ist eine benutzerdefinierte Funktion zum Durchlaufen eines Wörterbuchs:
quelle
Hier ist eine Alternative für dieses Experiment (Swift 3.0). Hier erfahren Sie genau, welche Art von Nummer die größte war.
quelle
Wenn Sie alle Werte durchlaufen möchten:
quelle
Arrays sind geordnete Sammlungen, Wörterbücher und Mengen sind jedoch ungeordnete Sammlungen. Daher können Sie die Reihenfolge der Iteration in einem Wörterbuch oder einer Menge nicht vorhersagen.
Lesen Sie diesen Artikel, um mehr über Sammlungstypen zu erfahren : Swift Programming Language
quelle
Sie können auch
values.makeIterator()
diktierte Werte wie folgt durchlaufen:Sie können die Iteration auch wie folgt in einem schnelleren Stil ausführen:
*
sbItems
ist ein Diktat des Typs[String : NSManagedObject]
quelle