Swift SequenceType实现

Swift SequenceType实现,swift,Swift,Swift实现中的SequenceType(序列类型),但这两个协议似乎基本相同。为什么要这样实施 protocol SequenceType : _Sequence_Type { typealias Generator : GeneratorType func generate() -> Generator } protocol _SequenceType { } protocol _Sequence_Type : _SequenceType { /// A

Swift实现中的SequenceType(序列类型),但这两个协议似乎基本相同。为什么要这样实施

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
}

带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。)


简言之,答案是“因为我们实际上不知道这些协议中包含什么。”

带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。)


简言之,答案是“因为我们实际上不知道这些协议中包含什么。”

带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。)


简言之,答案是“因为我们实际上不知道这些协议中包含什么。”

带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。)

简言之,答案是“因为我们实际上不知道这些协议中包含什么。”