let someString = 「Some String」
let someString: String = 「Some String」
對於這兩個:
這兩者之間的運行效率差爲零。在編譯過程中,Swift會推斷它的類型併爲你寫。但一旦編制完成,這兩個陳述就是相同的。
let someString = 「Some String」 as String
表示您正在鑄造someString
值爲字符串,如果它不是字符串。
let someString = 「Some String」 as! String
意味着你強行鑄造「一些字符串」作爲一個字符串,但如果它是無法轉換爲字符串,然後它會崩潰的應用程序。
let someString = 「Some String」 as? String
意味着你可選擇鑄造「Some String」
字符串意味着如果不轉換爲字符串,然後它會在此時返回零,但不會崩潰。
對於最後3條語句它會編譯和工作,但將String轉換爲String絕對是錯誤的。沒有必要投入String
到String
。
而最後2 as?
和as!
總會在您的情況下成功。
考慮下面的例子:
let stringObject: AnyObject = "Some String"
let someString3 = stringObject as! String
let someString5 = stringObject as? String
這是當你需要轉換。僅當您知道它是字符串時才使用as!
。如果你不知道它是否是字符串,則使用as?
。
if let someString5 = stringObject as? String {
println(someString5)
}
很好解釋:
只有當你確信以其它方式使用有條件的鑄像這樣迫使垂頭喪氣與
as!
。非常感謝。 – Vakas