【问题标题】: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。