首页 > 代码库 > swift3.0:associatedtype
swift3.0:associatedtype
E文:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Generics.html
associatedtype用于protocol中 associatedtype类型是在protocol中代指一个确定类型并要求该类型实现指定方法
比如 我们定义一个protocol
protocol Container { associatedtype ItemType mutating func append(_ item: ItemType) var count: Int { get } subscript(i: Int) -> ItemType { get } }
之后实现这个协议
struct IntStack: Container { // original IntStack implementation var items = [Int]() mutating func push(_ item: Int) { items.append(item) } mutating func pop() -> Int { return items.removeLast() } // conformance to the Container protocol typealias ItemType = Int mutating func append(_ item: Int) { self.push(item) } var count: Int { return items.count } subscript(i: Int) -> Int { return items[i] } }
其中items实现了ItemType这个代指变量
由于swift的类型推断,你实际上并不需要声明一个具体ItemType
的Int
作为定义的一部分IntStack
。由于IntStack
符合所有的要求Container
协议,swift可以推断出适当的ItemType
使用,只需通过查看类型append(_:)
方法的item
参数和标的返回类型。事实上,如果你删除typealias ItemType = Int
上面从代码行,一切仍然有效,因为很明显应该使用什么类型ItemType
。
swift3.0:associatedtype
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。