含义是什么:
Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element
在this(Swift标准库)swift实例方法声明中?
func joined<Separator>(separator: Separator) ->
JoinedSequence<Array<Element>> where Separator : Sequence,
Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element
以下是Apple的例子:
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]"
答案 0 :(得分:2)
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
s的序列,[Int]
是。
尝试传递[String]
作为分隔符 - 由于String
≠Int
,您将收到编译错误,因此无法满足要求{{ 1}}。