【Swift3 - 列舉(enum)介紹】

列舉 (enum) 在 Swift 中是一個很唯妙的東西,它雖不是物件,但它確具有物件導向的特性,並在 Swift 中扮演著管理常數的角色。它可說是大大的幫助我們提高了程式的可讀性並使程式碼更容易維護,這法蘭克在後面會舉例子來說明,我們就先從如何定義 enum 開始,逐步的往下做。

▼如何宣告enum

enum 列舉名稱 {
     case 成員
}

透過 enum 關鍵字來宣告列舉,並透過大括號和 case 關鍵字將成員定義在裡面,以下就試著來宣告一個 enum。

▼宣告enum成員的初始值

透過冒號 (:) 來指定成員的型別,這邊不僅僅可以是 Int,也可以是 Double、Float、String…等等。

▼enum的成員初始值也可是值組(tuple)的型別

▼如何使用enum的相關範例

我們在 18 行賦與 Shape enum 圓形的值,並呼叫 chooseShape 將值傳遞給它,在第 8 行開始判斷 Shape enum 傳入的值為何,這邊有一點值得注意的是 case 一定得包括 enum 所有的成員值。

定義可傳入值組 (tuple) 型別的 enum,並在第 18 行傳入值組 (tuple) 的參數,該範例的執行結果會為 18。

▼使用enum提高程式可讀性

假設開發 API 和使用 API 是不同人的狀況下,我們又是要使用 API 的人,呼叫 chooseShape 還是 chooseShape_2 的可讀性會是比較高的呢?看完應該想都不用想吧….

第一個 func 傳入的參數是 enum,我們可以很清楚並知道 func 會做什麼事情。然而第二個 func 傳入的參數是 Int,天曉得它的 1、2、3 是要幹嘛的阿?甚至我們還要花點時間好好的閱讀一下它呢….


結論:

不曉得大家在開發過程中有沒有發現 Apple 的 API 大多數的參數都是定義為 enum 的呢?比如說替按鈕增加事件的 API。

switchBtn.addTarget(self, action: #selector(PageA.onClickToPageB(_:)), for: UIControlEvents.touchUpInside)

這樣定義我們只要看字面上的意思就可以很清楚明白的 addTarget 將會做什麼事!所以說囉,大家務必也要養成這樣的好習慣喔,也才不會惹來其它人的白眼,哈哈哈~

Show your support

Clapping shows how much you appreciated 法蘭克的IOS世界’s story.