【问题标题】:Understanding what Self.Generator.Element is in Swift map definition了解 Swift 地图定义中的 Self.Generator.Element 是什么
【发布时间】:2016-09-26 06:25:04
【问题描述】:

这里是斯威夫特菜鸟。

许多函数在闭包定义的参数中都有 Self.Generator.Element。到底是什么?我试图去定义,它没有带我去哪里。

public func map<T>(@noescape transform: (Self.Generator.Element) throws -> T) rethrows -> [T]

【问题讨论】:

    标签: swift functional-programming closures


    【解决方案1】:

    这是一系列已解析的通用协议类型。 Self 是这个泛型协议的采用者,它有一个名为 Generator 的关联类型,它采用 GeneratorType,它本身就是一个泛型协议,它有一个名为 Element 的关联类型。所以 Self.Generator.Element 是 that 类型解析到的任何东西。

    这个链是序列(或集合)与其元素之间关系的基础。例如,如果 Self 是 CollectionType,则 Self.Generator.Element 是集合元素的类型。

    因此,例如,类型为Array&lt;String&gt;[String] 的字符串数组是Self.Generator.Element 为字符串的集合。因此map 方法的transform 函数(在您的示例中)将使用字符串作为其参数。

    (注意map 没有说明transform 函数输出什么类型;它是一个纯泛型占位符T。编译器希望在编译时看到实际函数时能够解析T .)

    【讨论】:

    • 这是有道理的。 “因此,例如,一个字符串数组,类型为 Array 或 [String],是一个其 Self.Generator.Element 为字符串的集合。”我有点知道,但读了别人的话说让它坐对了。谢谢。
    • 谢谢。您的在线书籍似乎比官方文档更容易消化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 1970-01-01
    • 2018-12-27
    • 1970-01-01
    • 2018-08-11
    • 2010-10-04
    相关资源
    最近更新 更多