swift从入门到精通16-泛型

208 阅读1分钟

1.泛型

泛型可以类型参数化,提高代码复用率,减少代码量。

例子:

func swapValue<T>(a: inout T, b: inout T){
    (a,b) = (b,a)
}


var a = 10
var b = 20


swap(&a, &b)
print("a",a)
print("b",b)

2.关联类型

关联类型的作用:给协议中用到的类型定义一个占位名称,协议中可以拥有多个关联类型。

例子:

protocol Aable {
    associatedtype Element
    mutating func push(_ emement: Element)
    mutating func pop() -> Element
}


class AClass<E>: Aable {
    typealias Element = E
    var elements = [E]()
    func push(_ emement: E) {
        elements.append(emement)
    }
    func pop() -> E {
        elements.removeLast()
    }
}


var aclass = AClass<Int>()
aclass.push(5)
aclass.push(10)
print(aclass.elements)
_ = aclass.pop()
print(aclass.elements)

3.some

使用some关键字来声明一个不透明类型,来限制只返回一种类型。

例子:

protocol BAble {}
class BClass: BAble {}
class CClass: BAble {}


func getType(_ type: Int) -> some BAble {
    BClass()
}


getType(1)


上一篇文章:swift从入门到精通15-错误处理

下一篇文章:swift从入门到精通17-扩展