如何最小化可选项
问题描述:
我想输入一个数字作为字符串,并使用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")
}
另一种方法: 'let let number = readLine()。map {Int($ 0)} else else ... ... – Alexander