Swift 5.x 泛型类型

2020-07-10  本文已影响0人  ShenYj

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]
    }
}
上一篇 下一篇

猜你喜欢

热点阅读