泛型代码让你能根据你所定义的要求写出可以用于任何类型的灵活的、可复用的函数。你可以编写出可复用、意图表达清晰、抽象的代码
1.泛型函数
func swapTwoValues<T>(_ a: inout T, _ b: inout T) {
let temporaryA = a
a = b
b = temporaryA
}
作用:swapTwoValues中的两个行参a和b可以传任何类型的数据
2.泛型类型
struct stack<Element> {
var items = [Element]()
mutating func push(_ item : Element) {
items.append(item)
}
mutating func pop() -> Element {
return items.removeLast()
}
}
作用:使任何类型的Element都具备 push 和 pop方法
3.泛型扩展
extension stack{
var topItem : Element?{
return items.isEmpty ? nil : items[items.count - 1]
}
}
作用:未知
4.类型约束
func someFunction<T: SomeClass, U: SomeProtocol>(someT: T, someU: U) {
// function body goes here
}
作用: someT 要求是SomeClass及其子类
someU 必须遵守SomeProtocol
网友评论