首页 > 其他 > 详细

swift的泛型貌似还差点意思

时间:2014-06-05 20:10:30      阅读:497      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
protocol Container {
    typealias ItemType
    mutating func append(item: ItemType)
    mutating func removelast() -> ItemType
    var count: Int {get}
    subscript(i: Int) -> ItemType{get}

}

// Container<T> ???
// protocol not gen!
struct Hole<T>: Container {
    typealias ItemType = T
    var elements = ItemType[]()
    var count: Int {
    get{
        return elements.count
    }
    }
    mutating func append(item: ItemType){
        elements.append(item)
    }
    subscript(i: Int) -> ItemType {
        return elements[i]
    }
    mutating func removelast() -> ItemType{
        return elements.removeLast()
    }
}

class Stack<T>{
    var storage = Hole<T>()
    typealias ItemType = T
    typealias StorageType = Hole<T>.ItemType
    func push(item:ItemType) {
        storage.append(item)
    }
    func pop() -> ItemType{
        return storage.removelast()
    }
}
bubuko.com,布布扣

protocol不支持泛型,带来很多限制,不够灵活, 难道是为了兼容objc?

如果可以这么用,就会更灵活

class Stack<T, T2:Container>{
    var storage = T2<T>()
    ....
}

 

swift的泛型貌似还差点意思,布布扣,bubuko.com

swift的泛型貌似还差点意思

原文:http://www.cnblogs.com/lightlfyan/p/3768353.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!