web-dev-qa-db-fra.com

Swift: Comment utiliser la boucle for-in avec une boucle facultative?

Quelle est la bonne façon d'utiliser la boucle for-in avec une boucle facultative?

À l'heure actuelle, j'effectue toujours une liaison facultative avant de la boucler. Y a-t-il d'autres idiomes?

let optionalInt:[Int]? = [1, 2, 3]

if let optionalInt = optionalInt {
  for i in optionalInt {
    print(i)
  }
}
40
Boon

Si un ensemble d'opérations doit être appliqué à tous les éléments du tableau, il est possible de remplacer for-loop par forEach{} fermeture et utilisation chaînage optionnel :

var arr: [Int]? = [1, 2, 3]
arr?.forEach{print($0)}
43
Richard Topchiy

Je ne pense pas qu'il existe une bonne façon. Il existe de nombreuses façons différentes, cela se résume vraiment à ce que vous préférez, Swift est plein de fonctionnalités qui peuvent rendre votre programme vraiment agréable selon votre choix.

Voici quelques pistes auxquelles je pourrais penser:

let optionalInt:[Int]? = [1, 2, 3]

for i in optionalInt! { print(i) }

for i in optionalInt ?? [] { print(i) }

for i in optionalInt as [Int]! {  print(i) }
20
luizParreira

Vous pouvez écrire celui-ci:

let optionalInt:[Int]? = [1, 2, 3]
for i in optionalInt ?? [Int]() {
    print(i)
}

Mais je vous recommande d'éviter d'utiliser une valeur facultative, par exemple, vous pouvez écrire comme ceci:

var values = [Int]()
// now you may set or may not set 
for i in values {
    print(i)
}

Ou si vous souhaitez utiliser une valeur facultative et que ce code appelle dans une fonction, vous pouvez utiliser guard:

guard let values = optionalInt else { return }
for i in values {
    print(i)
}
7
Arsen