在 Swift 中,有個 value binding 過程,覺得蠻有趣的。
譬如:
var str:String?
表示 str 的型態是 String,而且可以支援 nil。
if let tmp=str
{
print("tmp is \(tmp)")
}
上面這段程式是說,如果 str 不是 nil ,就將 str 指派給 tmp;相反地,如果 str 是 nil,就不會把 str 指派給 tmp,而這個 if 的判斷式就不成立了,也就不會執行下面那行 print("tmp is \(tmp)”)。
這過程就叫做 value binding,有同時確保 tmp 一定會有值
更妙的,是 swift 可以允許 = 號左右兩邊都取同樣名稱的變數,也就是說,下面寫法也是成立的:
if let str=str
{
print("str is \(str)")
}
這樣子的寫法,的確清爽許多,但如果沒事先理解箇中原委,實在無法想像為何程式可以這樣寫。