SequenceType实现

时间:2014-09-02 18:06:12

标签: swift

Swift中的SequenceType实现_Sequence_Type,但这两个协议看起来基本相同。为什么这样实现?

protocol SequenceType : _Sequence_Type {
    typealias Generator : GeneratorType
    func generate() -> Generator
}

protocol _SequenceType {
}

protocol _Sequence_Type : _SequenceType {

    /// A type whose instances can produce the elements of this
    /// sequence, in order.
    typealias Generator : GeneratorType

    /// Return a generator over the elements of this sequence.  The
    /// generator's next element is the first element of the sequence.
    func generate() -> Generator
}

1 个答案:

答案 0 :(得分:3)

带有前导下划线的协议是Apple私有的。它们的标题通常不包括所有实际方法。您可以通过声明一个类来实现它们来反向设计它们的实际方法,并查看编译器所说的缺失。 (结果当然完全不受支持,很可能在版本之间发生变化,这就是特定协议可能是私有的原因。)

简而言之,答案是"因为我们实际上并不知道这些协议中的内容。"