如何最小化可选项

问题描述:

我想输入一个数字作为字符串,并使用readLine返回一个String ?.然后我想将输入的字符串转换为Int,它也返回一个Int ?.如果任一可选返回零,则打印一个错误;否则,使用Int。以下代码有效,但必须有更好的方法。有任何想法吗?如何最小化可选项

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

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

可以readLine响应的解包和转换相结合,Int并确保数字转换成功到一个单一的guard声明,例如,

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

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

可以很明显的旋转是如果你想要:

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

另一种方法: 'let let number = readLine()。map {Int($ 0)} else else ... ... – Alexander