Swift笔记<十九>泛型

泛型概念
  • 简单理解就是一个"泛化"的类型,并不特指某一个具体类型
泛型的使用
  • 泛型作为函数的参数或返回值
//交换值
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()
  • 泛型与where语句的结合使用
func text<T>(a:T) where T:Person{
    
    //必须是继承Person的泛型才行
}
text(a:p)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本章将会介绍 泛型所解决的问题泛型函数类型参数命名类型参数泛型类型扩展一个泛型类型类型约束关联类型泛型 Where...
    寒桥阅读 3,890评论 0 2
  • 泛型(Generics) 泛型代码允许你定义适用于任何类型的,符合你设置的要求的,灵活且可重用的 函数和类型。泛型...
    果啤阅读 4,003评论 0 0
  • 泛型代码可以确保你写出灵活的,可重用的函数和定义出任何你所确定好的需求的类型。你的可以写出避免重复的代码,并且用一...
    iOS_Developer阅读 4,239评论 0 0
  • 咚,咚,咚……. 有人敲门,是楼下的。 一个中年妇女,脸上涂着一层厚厚的胭脂,可能是因为天气炎热的原因,脸上被汗水...
    王小二日记阅读 4,342评论 0 2
  • 我们总在叹息时间过得快,懊悔我们所做过的事情,如果当初再坚持下来,也许现在人生将是另一番风采。新的一年里,希望...
    潍坊泰华DDM店刘云阅读 1,157评论 2 0

友情链接更多精彩内容