Swift SequenceType实现
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
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
}
带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。)
简言之,答案是“因为我们实际上不知道这些协议中包含什么。”带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。)
简言之,答案是“因为我们实际上不知道这些协议中包含什么。”带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。)
简言之,答案是“因为我们实际上不知道这些协议中包含什么。”带有前导下划线的协议是苹果专用的。它们的标题通常不包括它们的所有实际方法。您可以通过声明一个类来实现它们,从而对它们的实际方法进行反向工程,并查看编译器所说缺少的内容。(结果当然完全不受支持,并且很可能在不同版本之间发生变化,这就是为什么特定协议可能是私有的。) 简言之,答案是“因为我们实际上不知道这些协议中包含什么。”