首页 > 代码库 > swift的泛型貌似还差点意思
swift的泛型貌似还差点意思
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() } }
protocol不支持泛型,带来很多限制,不够灵活, 难道是为了兼容objc?
如果可以这么用,就会更灵活
class Stack<T, T2:Container>{ var storage = T2<T>() .... }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。