泛型概念
- 简单理解就是一个"泛化"的类型,并不特指某一个具体类型
泛型的使用
//交换值
func exchange<T>(num1:inout T,num2:inout T){
//一旦函数内部确定T,具体的类型
//那么所有的T,都是该类型
let tmp = num1;
num1 = num2
num2 = tmp
}
var a = 10
var b = 11
exchange(num1: &a, num2: &b)
var a1 = 1.1
var b1 = 2.2
exchange(num1: &a1, num2: &b1)
struct Point<T>{
var x :T
var y :T
}
let point = Point(x: 1, y: 2)
let point2 = Point(x: 1.1, y: 2.2)
class Stack<T>{
var array:[T] = []
func pop() -> T? {
return array.removeLast()
}
func push(_ value:T){
array.append(value)
}
}
let st = Stack<Any>()
st.push("1")
st.push("2.2")
st.pop()
st.pop()
protocol Work{
associatedtype T
func run() -> T
func eat() -> T
}
class Person:Work{
func run() -> Person {
print("跑步")
return self
}
func eat() -> Person {
print("吃饭")
return self
}
}
class Dog:Work{
func run() -> Dog {
print("小狗跑")
return self
}
func eat() -> Dog {
print("小狗吃饭")
return self
}
}
let p = Person()
p.run().eat().run().eat()
func text<T>(a:T) where T:Person{
//必须是继承Person的泛型才行
}
text(a:p)
网友评论