swift基本部分

2017-01-27  本文已影响0人  小山包
if let actualNumber = Int(possibleNumber) {
       print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")
} else {
       print("\'\(possibleNumber)\' could not be converted to an integer")
}
// 输出 "'123' has an integer value of 123"

表示Int(possibleNumber)结果如果不是nil则把值赋给actualNumber然后进入if体,否则进入else体

let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要惊叹号来获取值
let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString  // 不需要感叹号
//let assumedString: String!这样声明后,assumedString仍然可能是nil的,
//并不是这样声明就强制你一定要声明时赋值,所以使用assumedString的时候仍然有
//运行时错误的风险

问题是如果什么都不加呢?代表是肯定有值还是什么?
隐式解析可选类型本质上仍然是可选类型,所以可选类型可以做的事情隐式解析可选类型都可以做

注意:
如果一个变量之后可能变成nil的话请不要使用隐式解析可选类型。如果你需要在变量的生命周期中判断是否是nil的话,请使用普通可选类型。

func makeASandwich() throws {
    // ...
}
do {
        try makeASandwich()
        eatASandwich()
} catch SandwichError.outOfCleanDishes {
        washDishes()
} catch SandwichError.missingIngredients(let ingredients) {
        buyGroceries(ingredients)
}
上一篇 下一篇

猜你喜欢

热点阅读