Swift語言之類型方法

來源:互聯網
上載者:User

標籤:

Swift語言有很多特性,其中之一就是類型方法,相對於其他比較流行的程式設計語言(C#、Java),在Swift中類型方法最大的特徵在於它的可繼承性,我們舉個例子說明:

俗話說,龍生龍鳳生鳳老鼠生兒會打洞;雖說龍和鼠都屬於動物,但畢竟不是同類,所以生出來的當然不一樣。

同理,對於Dragon和Mouse兩個類而言,它們的newInstance類型方法返回的結果應該是各自類的執行個體;

我們先建立一個名為Animal的協議:

protocol Animal {    class func newInstance() -> Animal}

這個協議很簡單,要求所有實現它的類都應該定義newInstance方法:

class Dragon : Animal, Printable {    class func newInstance() -> Animal {        return Dragon()    }        let description = "Dragon"}class Mouse : Animal, Printable {    class func newInstance() -> Animal {        return Mouse()    }        let description = "Mouse"}

我隨後定義了兩個實現Animal協議的類,這裡同時實現了Printable協議純粹是為了列印方便;

同時,我定義了一個範型的方法用於調用newInstance方法:

func printAnimal<T: Animal>(type: T.Type){    println(type.newInstance())}

執行下面語句:

printAnimal(Dragon.self)printAnimal(Mouse.self)

結果是:

Dragon

Mouse

Swift語言之類型方法

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.