[SWIFT] si le cas let b comme Int = a est plus rapide que si let b = a as? Int

Lors de la diffusion dans Swift et de l'utilisation de cette valeur, lancez avec ʻas? , Faites-en un type ʻOptional et reliez-le à ce type ʻOptional Je pense que la valeur est souvent récupérée par ʻOptional Binding.

let a: Any = 120
if let b = a as? Int {
    //Traitement à l'aide de b
}

Cependant, dans ce cas, le flux est un peu compliqué car il passe une fois par ʻOptional`.

Il existe une autre façon de l'écrire.

let a: Any = 120
if case let b as Int = a {
    //Traitement à l'aide de b
}

Avec cela, vous pouvez lancer en toute sécurité sans passer par Option.

Surface de vitesse

Vitesse lors de l'exécution de 10000 fois

as? case
0.011s 0.001s

Il y a une différence d'environ 10 fois.

La bibliothèque Swift Standart utilise également case plus souvent.

Extrait du contenu de Swift.print

![Capture d'écran 2020-10-12 18.00.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/117659/d90e5b26-0aa2-42af-f6f4 -6bd5ff9d8025.png) https://github.com/apple/swift/blob/9af806e8fd93df3499b1811deae7729176879cb0/stdlib/public/core/OutputStream.swift#L375

Recommended Posts

si le cas let b comme Int = a est plus rapide que si let b = a as? Int
Le cas où le prochain () de Resultset a été confondu avec la méthode de jugement de l'existence ou non