1. 程式人生 > >Swift富含表達力的列舉!

Swift富含表達力的列舉!

是的,標題是感嘆句!是對Swift列舉強大的也是夠了的一種表達 ;)

舉個栗子,一個很簡單的類:

class Trace{
    enum TraceResult{
        case success
        case failed
    }
}

如上,Trace用來跟蹤使用者每日的行為,可以看到包括成功和失敗兩種情況。

如果我允許使用者自定義結果呢???有的使用者不希望簡單的將結果歸為成功和失敗,他/她希望結果體現出一個程度值,比如:A,B,C,D

這該如何呢?

其實不管使用者定義什麼樣的結果,我只要知道它表示的東東就可以了,比如說String。

只要在列舉中新增一個自定義項就可以了:

enum TraceResult{
    case success
    case failed
    case custom
}

但是腫麼體現出自定義的效果呢???用列舉附加吧:

enum TraceResult{
    case success
    case failed
    case custom(String)
}

我們這樣定義和取回自定義的值:

let result = Trace.TraceResult.custom("Super Good")
if case let TraceResult.custom(value) = result{
    print("custom value is \(value)"
) }

That’s it,有感而發,大家以管窺豹一下吧 ;)