[Swift] Correspondance de motif de boucle par lettrine

Quel est cet article?

En lisant l'exemple de code d'Apple, j'ai trouvé une syntaxe que je ne voyais pas, alors je l'ai recherchée.

Partie de l'exemple de code


for case let foundObject as VNRecognizedObjectObservation in results {
    let bestLabel = foundObject.labels.first!	
    let objectBounds = foundObject.boundingBox
    print(bestLabel.identifier, bestLabel.confidence, objectBounds)	
}

J'étais intéressé par la première ligne. for case let foundObject as VNRecognizedObjectObservation in results Je comprends que je suis en train de parcourir la collection, mais case let x as T était un mystère. En passant, cet exemple de code est une application de reconnaissance d'image qui utilise le framework Vision. Il semble que les résultats de détection par "Vision" soient alignés dans "résultats".

Diffuser uniquement les valeurs correspondantes

J'ai exécuté le code simplifié et je l'ai vu fonctionner.

Environnement d'exécution

Xcode 12.1 Swift 5.3 macOS 10.15.7

Un tableau de types d'éléments incohérents


let values: [Any] =  [ "1", 2, 3.4]

Traiter uniquement les "valeurs pouvant être converties en type Int" parmi les éléments du tableau


for case let number as Int in values {
    print(number)
}
// Prints 2

Considération

Si vous souhaitez simplement obtenir le même résultat d'exécution, il existe probablement plusieurs autres approches. Cependant, il n'y a que l'exemple de code d'Apple, et je pense qu'il est implémenté avec une description très simple.

Recommended Posts

[Swift] Correspondance de motif de boucle par lettrine