swift的泛型与c++的泛型很像,也是用一个<>来表示,也是可以对函数、类型进行泛型。
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 //关联类型
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)