首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么意思: Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element

什么意思: Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element
EN

Stack Overflow用户
提问于 2017-02-15 11:46:41
回答 1查看 327关注 0票数 0

以下是什么意思:

代码语言:javascript
复制
Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element

(Swift标准库)快速实例方法声明中?

代码语言:javascript
复制
func joined<Separator>(separator: Separator) -> 
JoinedSequence<Array<Element>> where Separator : Sequence, 
Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element

以下是来自苹果的例子:

代码语言:javascript
复制
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]"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 12:26:24

joined(separator:)可以调用序列序列:

代码语言:javascript
复制
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] -您将得到一个编译器错误,因为StringInt,因此不符合要求的Separator.Iterator.Element == Iterator.Element.Iterator.Element

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42248511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档