2017-06-02 1 views
0

Je veux entrer un nombre sous forme de chaîne et j'utilise readLine qui renvoie une chaîne ?. Ensuite, je veux convertir cette chaîne entrée en un Int qui renvoie également un Int? Si l'une des options renvoie zéro, imprimez une erreur; sinon, utilisez l'Int. Le code suivant fonctionne mais il doit y avoir un meilleur moyen. Des idées?Comment minimiser les options

print ("Enter number: ", terminator:"") 
let number = readLine() 

if number != nil && Int (number!) != nil 
{ 
    let anInt = Int (number!)! 
} 
else 
{ 
    print ("Input Error") 
} 

Répondre

3

Vous pouvez combiner le dépliage de readLine réponse et la conversion en Int et en vous assurant la conversion numérique a réussi en une seule déclaration guard, par exemple,

guard let string = readLine(), let number = Int(string) else { 
    print("input error") 
    return 
} 

// use `number`, which is an `Int`, here 

Vous pouvez évidemment tourner que autour si vous voulez:

if let string = readLine(), let number = Int(string) { 
    // use `number`, which is an `Int`, here 
} else { 
    print("input error") 
} 
+1

Une autre approche: 'guard let nombre = readLine(). map {Int ($ 0)} else {...' – Alexander