2019年7月11日 星期四

Swift 的value binding


在 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)")
}

這樣子的寫法,的確清爽許多,但如果沒事先理解箇中原委,實在無法想像為何程式可以這樣寫。

沒有留言:

張貼留言