Swift 關聯型別

2021-06-28 19:16:49 字數 2070 閱讀 8340

//***********************************

////

關聯型別

// 20150106

我的理解

:類似是協議裡面的泛型型別

// 定義協議時使用關聯型別,就不必指定專門的型別,靈活性更高

////***********************************

////

下面的例子裡,

container

協議定義了乙個

itemtype

關聯型別和三個相容要求

// 1.

能通過方法新增乙個新

item

到container

// 2.

能使用count

返回數值:例子裡是返回

container

裡面items

的數量

// 3.

能通過container

的下標獲取到型別

=itemtype

的乙個值

////***********************************

protocol

container

subscript

(i:

int) ->

itemtype

}struct

intstack:

container

mutating

func

pop() ->

int//

下面是遵循

container協議

typealias

itemtype =

int

//下面的itemtype

用int

代替同樣生效

mutating

func

itemtype

) var

count:

intsubscript

(i:

int) ->

itemtype}//

改寫成泛型型別

struct

stack:

container

mutating

func

pop() ->

ttypealias

itemtype = t

mutating

func

itemtype

) var

count:

intsubscript

(i:

int) ->

itemtype

}//***********************************

////

由上述可見,陣列

array

其實是符合

container

協議的,只要進行乙個空擴充套件,

// 即可將array

當做container

來使用

////***********************************

extension

array

: container{}

//*************************************

//// where子句

// where

語句能夠要求乙個關聯型別遵循特定的協議

////*************************************

func

allitemsmatch<

c1:container, c2: container

where

c1.itemtype == c2.itemtype, c1.itemtype: equatable>

(somecontainer:

c1, anothercontainer:

c2) ->

bool

fori in0

..count

}return

true

}

Swift 39 列舉型別關聯預設值

playground noun a place where people can play import uikit enum month int let currentmonth month nov 檢視列舉對應的值 currentmonth.rawvalue 通過這種方法建立出來的列舉變數是乙個...

Swift 型別轉換

import uikit 1.定義基類 mediaitem 2.定義子類 movie 3.定義子類 song class mediaitem class movie mediaitem class song mediaitem let library movie name movie1 direct...

Swift 型別約束

型別約束 指必須繼承指定的類或者遵循特定的協議 語法 funcsomefunc somet t,someu u 表示函式有兩個引數 somet 和someu 型別分別是t和 u,其中t是 someclass 子類,u 遵循someprotocol 先看非泛型的函式 func findstringin...