web-dev-qa-db-fra.com

Swift 2 - Correspondance de motif dans "si"

Récemment, j'ai vu le discours d'ouverture de la WWDC 2015 d'Apple. J'ai également regardé de la documentation mais je ne trouve pas de section "correspondance de motifs dans if", comment elle a été écrite sur l'une des diapositives qu'ils ont montrées. (Vidéo 68 min 00sec de Événements Apple )

Savez-vous à quoi cela fait référence? Ou la syntaxe?

32
Qbyte

Tout ce que cela signifie vraiment, c'est que si les instructions prennent désormais en charge la mise en correspondance de modèles comme les instructions de commutateur le sont déjà. Par exemple, ce qui suit est maintenant un moyen valide d'utiliser les instructions if/else if/else pour "basculer" sur les cas d'une énumération.

enum TestEnum {
    case One
    case Two
    case Three
}

let state = TestEnum.Three

if case .One = state {
    print("1")
} else if case .Two = state {
    print("2")
} else {
    print("3")
}

Et ce qui suit est maintenant un moyen acceptable de vérifier si someInteger est dans une plage donnée.

let someInteger = 42
if case 0...100 = someInteger {
    // ...
}

Voici quelques autres exemples utilisant le modèle facultatif de The Swift Programming Language

let someOptional: Int? = 42
// Match using an enumeration case pattern
if case .Some(let x) = someOptional {
    print(x)
}

// Match using an optional pattern
if case let x? = someOptional {
    print(x)
}
63
Mick MacCallum