[ SWIFT ] - 史丹福 StandFord-CS193P-課程3-心得分享-20150723

[ SWIFT ] - 史丹福 StandFord-CS193P-課程3-心得分享-20150723
如何自定類別,達到MVC中的模組化(Model)
課程3有4個必學重點:(1)enum(2)init初始化(3)自定Class(4)Closure閉包觀念-將func當做參數傳遞

說真的課程內容很精采!但是需要時間消化,內容我會逐一補齊!

(1)enum 枚舉:

enum是定義一個通用型別的一組相關的值,具有幾個特性:

利用PrintTable 達到enum列印的目的
利用description達到輸出 enum


(2)init初始化

執行初始化的method叫做initializer,class, structure和enumeration都可以設定initializer,以init()表示,init內容會最早被執行。

(3)自訂Class


請允許我先介紹 Closure
(4)CLOSURE介紹

Closure 的語法如下: 
{
(參數列) - >; 回傳型態 in Closure 的程式碼
}

Closure寫法,總共有6種,其中5種為Closure的基本語法,另外1種則是Function使用Closure的便捷語法,相關寫法如下:

為簡單說明,請允許我使用這個錯誤的範例:
func A(name:String) ->; String{
  return "Your name is" +name
}

func B(Phone:String) - >; String{
   return "Your PHONENO is" +phone
}

1.完整寫法
說明:直接傳入func名稱作為closure

A(B("28825252")) 
執行結果:Your name is Your PHONENO is 28825252
補充說明:當我們將函數當做參數傳遞時,緊記外部執行完後傳入內部

2.完整的匿名Clouse
說明:直接以{}帶入,注意return前要加上 in 

A({Phone:String -> String  in return  "Your PHONENO is" +phone})

3.簡略的匿名Clouse
說明:由於swift可以導出Phone:String -> String  in return  "Your PHONENO is" +phone來自B函數,因此知道函數參數的類型,故可以省略參數類型,只寫參數名

A({Phone in return "Your PHONENO is" +phone})

4.精簡的匿名Clouse
說明:完全不定義參數名,當不宣告參數時,系統會直接以$加入參數位置取代,參數位置由0開始,此寫法 不需寫 in

A({ return "Your PHONENO is" +$0})

5.最精簡的匿名Clouse
說明:當傳入的參數是最後一個時,可以將參數搬移至()右方省略return,如果有多個參數時,其餘參數仍要在()中。

A(){ "Your PHONENO is" +$0}

留言

熱門文章