swift 如何在协议和协议扩展中允许相同的方法?

How is swift allowing same method in protocol and protocol extension?

这是在序列协议中似乎重复的映射方法。苹果是怎么做到的?这背后的意图是什么?

public protocol Sequence {
public func map<T>(_ transform: (Self.Iterator.Element) throws -> T) rethrows -> [T]
}

extension Sequence {
public func map<T>(_ transform: (Self.Iterator.Element) throws -> T)   rethrows -> [T]
}

协议序列需要一个map函数并且(使用协议扩展)为它提供一个默认的实现 .这就是协议扩展 for.