//***********************************
////
關聯型別
// 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...