美文网首页
Swift 5.x 泛型类型

Swift 5.x 泛型类型

作者: ShenYj | 来源:发表于2020-07-10 21:44 被阅读0次
    • 除了反省函数, Swift允许你定义自己的泛型类型. 它们是可以用于任意类型的自定义类、结构体、枚举, 和ArrayDictionary方式类型.

    1. 定义泛型类型
    InStack.png
    • 定义一个普通的结构体
    struct IntStack {
        var items = [Int]()
        mutating func push(_ item: Int) {
            items.append(item)
        }
        mutating func pop() -> Int {
            items.removeLast()
        }
    }
    
    • 泛型结构体
    struct Stack<Element> {
        var items = [Element]()
        mutating func push(_ item: Element) {
            items.append(item)
        }
        mutating func pop() -> Element {
            items.removeLast()
        }
    }
    
    var stackOfStrings = Stack<String>()
    var stackOfInts = Stack<Int>()
    

    2. 扩展泛型类型
    • 当你扩展一个泛型类型时, 不需要在扩展的定义中提供类型形式参数列表. 原始类型定义的类型形式参数列表在扩展体里仍然有效, 并且原始类型形式参数列表名称也用于扩展类型形式参数.
    struct Stack<Element> {
        var items = [Element]()
        mutating func push(_ item: Element) {
            items.append(item)
        }
        mutating func pop() -> Element {
            items.removeLast()
        }
    }
    // 而不是写成extension Stack<Element>
    // 并且泛型类型Element是可直接使用的 
    extension Stack {
        var topItem: Element? {
            return items.isEmpty ? nil : items[items.count - 1]
        }
    }
    

    相关文章

      网友评论

          本文标题:Swift 5.x 泛型类型

          本文链接:https://www.haomeiwen.com/subject/lwdvcktx.html