swift的泛型與c++的泛型很像,也是用一個(gè)<>來表示,也是可以對(duì)函數(shù)、類型進(jìn)行泛型。
e.g
func swapTwoValues<T> (_ a: inout T, _ b: inout T) {
? ? let tempA = a
? ? a = b
? ? b = tempA
}
var someInt = 3
var anotherInt = 107
swapTwoInts(&someInt, &anotherInt)
print("Now, someInt=\(someInt), anotherInt=\(anotherInt)")
swapTwoValues(&someInt, &anotherInt)
print("Now, someInt=\(someInt), anotherInt=\(anotherInt)")
protocol Container {
? ? associatedtype ItemType //關(guān)聯(lián)類型
? ? mutating func append(_ item: ItemType)
? ? var count: Int { get }
? ? subscript(i: Int) -> ItemType { get }
}
struct Stack: Container {
? ? var items = [Element]()
? ? mutating func push(_ item: Element) {
? ? ? ? items.append(item)
? ? }
? ? mutating func pop() -> Element {
? ? ? ? return items.removeLast()
? ? }
? ? mutating func append(_ item: Element) {
? ? ? ? self.push(item)
? ? }
? ? var count: Int {
? ? ? ? return items.count
? ? }
? ? subscript(i: Int) -> Element {
? ? ? ? return items[i]
? ? }
}
ar strStack = Stack()
strStack.append("one")
strStack.push("two")
strStack.push("three")
strStack.append("four")
print(strStack.count)
print(strStack[1])
strStack.pop()
print(strStack.count)