使用Swift Generics时,类型占位符是否必须是相同的类型?下面的示例将所有类型占位符转换为字符串类型。参数是否可以是一个字符串,返回类型是Int或do Generics工作,其中每个占位符是相同类型的?
以下是示例:
func takeAndReturnSameThing<T>(t: T) -> T {
return t
}
Let thing = takeAndReturnSameThing("howdy")
答案 0 :(得分:1)
类型参数(&#34;占位符&#34;)的重点是它们始终代表相同的类型。
如果您想要一般性地表示多种类型,请引入新的类型参数。
func takeAndReturnADifferentThing<T, U>(t: T) -> U {
return t.getU()
}
答案 1 :(得分:1)
您可以拥有多个这样的泛型类型:
func takeAndReturnDifferentThing<T,U>(t:T) -> U {
return t.convertToU() // Assuming type T has this method.
}
当然你应该constrain T和S来确保T可以转换为S.