Swift 3 que vous pouvez faire
for f in sequence(first: 1, next: { $0 < (1024/2) ? $0 * 2 : nil }) {
print(f)
}
Le concept de la fonction sequence
est décrite dans le documentation.
Impression d'une liste infinie est facile, le code serait juste
for f in sequence(first: 1, next: {$0 * 2}) {
print(f)
}
Puisque nous voulons que le programme d'arrêter à un moment donné, nous nous l'opérateur ternaire ?
pour mettre fin à la liste une fois que nous arrivons à la valeur maximum. Étant donné que la dernière valeur que nous souhaitons imprimer est 512
, la dernière valeur que nous devons doubler est 256
. Pour 512
qui ne satisfait pas la condition < (1024/2)
nous avons nil
et ainsi arrêter.
Pourquoi voudriez-vous le faire d'une autre manière? La façon dont vous l'avez est plutôt optimale. – Bathsheba
@Bathsheba de cette façon n'est pas possible dans Swift 3. – Fogmeister
Similaire: [Conversion d'un style C pour la boucle qui utilise la division pour l'étape à Swift 3] (http://stackoverflow.com/questions/39903503/converting-ac- style-for-loop-that-utilise-division-for-the-step-to-swift-3) et [Express pour les boucles dans swift avec plage dynamique] (http://stackoverflow.com/questions/40070202/express- for-loops-in-swift-with-dynamic-range) –