Swift笔记<十九>泛型

泛型概念
  • 简单理解就是一个"泛化"的类型,并不特指某一个具体类型
泛型的使用
  • 泛型作为函数的参数或返回值
//交换值
func exchange(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{
   var x :T
   var y :T
}
let point = Point(x: 1, y: 2)
let point2 = Point(x: 1.1, y: 2.2) 
  • 与类的结合
class Stack{
   
   var array:[T] = []
   
   func pop() -> T? {
       return array.removeLast()
   }
   func push(_ value:T){
       array.append(value)
   }
   
   
}

let st = Stack()
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()
  • 泛型与where语句的结合使用
func text(a:T) where T:Person{
    
    //必须是继承Person的泛型才行
}
text(a:p)

你可能感兴趣的:(Swift笔记<十九>泛型)