以下是什么意思:
Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element在这 (Swift标准库)快速实例方法声明中?
func joined<Separator>(separator: Separator) ->
JoinedSequence<Array<Element>> where Separator : Sequence,
Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element以下是来自苹果的例子:
let nestedNumbers = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
let joined = nestedNumbers.joined(separator: [-1, -2])
print(Array(joined))
// Prints "[1, 2, 3, -1, -2, 4, 5, 6, -1, -2, 7, 8, 9]"发布于 2017-02-15 12:26:24
joined(separator:)可以调用序列序列:
extension Sequence where Iterator.Element : Sequence {
// ...
public func joined<Separator : Sequence>(separator: Separator) -> JoinedSequence<Self>
where Separator.Iterator.Element == Iterator.Element.Iterator.Element
}它接受一个separator:参数,它本身必须是一个序列。约束Separator.Iterator.Element == Iterator.Element.Iterator.Element仅仅意味着分隔符的元素类型必须与调用joined(separator)的序列的内部元素类型相同。
例如,您在[[Int]]上调用它。它是Iterator.Element.Iterator.Element (数组元素类型的元素类型),是Int。因此,您使用的分隔符必须是Int的序列,[Int]是。
尝试为分隔符传入一个[String] -您将得到一个编译器错误,因为String≠Int,因此不符合要求的Separator.Iterator.Element == Iterator.Element.Iterator.Element。
https://stackoverflow.com/questions/42248511
复制相似问题