Je suis un peu confus sur la réponse que Xcode me donne à cette expérience dans le Guide du langage de programmation Swift:
// 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
Je comprends que le dictionnaire est transversed, le plus grand nombre est d' être mis à la variable, largest
. Cependant, je ne comprends pas pourquoi Xcode dit que cela largest
est réglé 5 fois, ou 1 fois, ou 3 fois, selon chaque test.
Lorsque je regarde le code, je vois qu'il doit être réglé 6 fois dans "Prime" seul (2, 3, 5, 7, 11, 13). Ensuite, il devrait ignorer tous les nombres dans "Fibonacci" car ceux-ci sont tous inférieurs au plus grand, qui est actuellement réglé à 13 depuis "Prime". Ensuite, il doit être réglé sur 16, et enfin 25 sur "Square", ce qui donne un total de 8 fois.
Suis-je en train de manquer quelque chose de complètement évident?
la source
Le résultat serait
("FirstName", "Maninder") ("LastName", "Singh") ("Adresse", "Chandigarh")
la source
Il s'agit d'une fonction définie par l'utilisateur pour parcourir un dictionnaire:
la source
Voici une alternative pour cette expérience (Swift 3.0). Cela vous indique exactement quel type de numéro était le plus grand.
la source
Si vous souhaitez parcourir toutes les valeurs:
la source
Les tableaux sont des collections ordonnées mais les dictionnaires et les ensembles sont des collections non ordonnées. Ainsi, vous ne pouvez pas prédire l'ordre d'itération dans un dictionnaire ou un ensemble.
Lisez cet article pour en savoir plus sur les types de collection: langage de programmation Swift
la source
Vous pouvez également utiliser
values.makeIterator()
pour parcourir les valeurs de dict, comme ceci:Vous pouvez également faire l'itération comme ceci, dans un style plus rapide:
*
sbItems
est un dict de type[String : NSManagedObject]
la source