Swift設(shè)計為類型安全語言廉羔,類型之間不可以隱性轉(zhuǎn)換溉痢,必須顯性轉(zhuǎn)換。
Swift分常量與變量蜜另,常量聲明用let敌厘, 而變量聲明使用var轮蜕。
基本類型Swift與以往的語言并無區(qū)別。
但對于變量的缺省奴愉,Swift有所不同蔬螟。
主要體現(xiàn)在一個普通聲明的Swift變量沒有初始化過此迅,那么在解釋或者編譯時,會給出“變量在使用前沒有初始化過”的錯誤。
var temp: Int // 會顯示 Variable 'temp1' used before being initialized
而如果是optional的變量耸序,則會在未初始化時忍些,給予nil的初始值。optional變量的寫法是:var temp: String?
坎怪。同時罢坝,為聲明為optional的變量,無法賦值為nil搅窿。
var temp: Int?
print(temp) // 會顯示nil
基于optional變量嘁酿,swift給出了條件綁定和強制展開兩個特性。
為什么要給出這兩個特性男应,首先optional變量聲明初始化后闹司,如果未設(shè)定初始值,則該變量值為nil沐飘,如果設(shè)定了初始值游桩,則變量值為optional(value)
。那么可以認為該變量是一個optional類型的對象耐朴。那么要使用對象中的值借卧,則需要展開該對象,把其中的值拿出來隔箍,那么就有了條件綁定和強制展開谓娃。
條件綁定,給予變量賦值時測試蜒滩,如果賦值右值為nil或者false則條件綁定失敗滨达,否則成功。
if let temp = Int("4") {
print(temp) // 會到這里顯示4
} else {
print(“failed”
}
if let temp = Int("Hello") {
print(“success”)
} else {
print("hi") // 會到這里俯艰,顯示hi, temp的作用域不到else中捡遍。
}
強制展開,當開發(fā)者知道optional變量肯定有非nil值時竹握,則在賦值時給右值變量后加驚嘆號画株。
var temp: String? = "4"
print(temp) // Optional("4")
print(temp!) // 4
那么如果強制展開時遇到nil時,則會產(chǎn)生一個運行時錯誤啦辐。
error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.