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
}
答案 0 :(得分:3)
带有前导下划线的协议是Apple私有的。它们的标题通常不包括所有实际方法。您可以通过声明一个类来实现它们来反向设计它们的实际方法,并查看编译器所说的缺失。 (结果当然完全不受支持,很可能在版本之间发生变化,这就是特定协议可能是私有的原因。)
简而言之,答案是"因为我们实际上并不知道这些协议中的内容。"