說例如我有這樣的課,而不是讓我將分配給init
方法的字段,我只是想隱含unwrapped選項。爲什麼隱式解包的選項需要在條件中再次解包?
class foo {
willBeSomeBool: Bool!
willBeSomeString: String!
}
我明白這樣做的原因是,當我宣佈他們,他們將有nil
的初始值,因此我並不需要一個init
所有類的字段具有初始值。我所需要做的就是確保在我嘗試訪問它們之前分配給他們一些東西,否則我會得到一個致命錯誤。
所以說,我們已經賦值到田間地頭,現在我們在一些方法,就是我要問的是:爲什麼我們需要強行解開了布爾當我們使用它的內部條件?我可以在條件之外訪問其他隱式解包的optionals甚至bool。
func bar() {
if willBeSomeBool! {
...
}
}
func buzz() {
print(willBeSomeString)
}
我最適合這種猜測是因爲我們仍然可以檢查在暗中展開變量零所以在有條件的情況下它被視爲,如果它只是一個正常的可選的,但就像我說的我最好猜,也許我錯過了別的東西?
完美,只是我一直在尋找的答案,歡呼! –
這符合斯威夫特規則,儘量不要給程序員帶來祕密的意義。他們並不總是遵守這個規則,但他們可能會看到他們正在努力;這就是爲什麼'var'參數和遞增/遞減運算符以及C-style for循環消失的原因。 – matt