【问题标题】:Swift Generic parameters and return typesSwift 泛型参数和返回类型
【发布时间】:2016-11-13 18:44:06
【问题描述】:

使用 Swift 泛型时,类型占位符是否都必须是相同的类型?下面的示例将所有类型占位符转换为字符串类型。参数是否可以是字符串而返回类型可以是 Int 或者泛型是否可以在每个占位符都是相同类型的情况下工作?

示例如下:

func takeAndReturnSameThing<T>(t: T) -> T {
    return t
}

Let thing = takeAndReturnSameThing("howdy")

【问题讨论】:

    标签: ios swift xcode generics types


    【解决方案1】:

    是的

    类型参数(“占位符”)的全部意义在于它们始终表示相同的类型。

    如果你想通用地表示多种类型,你需要引入新的类型参数。

    func takeAndReturnADifferentThing<T, U>(t: T) -> U {
        return t.getU()
    }
    

    【讨论】:

      【解决方案2】:

      你可以有多个这样的泛型类型:

      func takeAndReturnDifferentThing<T,U>(t:T) -> U { 
        return t.convertToU() // Assuming type T has this method.
      }
      

      当然你应该constrain T 和 S 以确保 T 可以转换为 S。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-15
        • 2016-09-16
        • 2021-05-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-23
        相关资源
        最近更新 更多