Swift 5.9中如何将generic type作为函数参数传递?
Swift泛型类的正确实现方式
要让类支持泛型属性与泛型初始化参数,核心是先将类声明为泛型类,你之前的错误都是因为遗漏了这关键一步。
正确代码示例
import Foundation // 在类名后添加<T>,声明这是泛型类,T为泛型参数 class Test_Class<T> { // 将属性类型改为泛型T,不再固定为Int var Test_Field: T // 初始化方法参数类型使用泛型T,与属性类型保持一致 init(value: T) { self.Test_Field = value } }
错误原因解析
第一次代码的问题:
- Swift要求初始化参数必须显式指定类型,或用
_作为匿名参数名,你既没写类型也没加_,导致编译器无法识别参数类型。 Test_Field初始化为0会默认锁定为Int类型,即便参数类型修复,后续也无法赋值其他类型。
- Swift要求初始化参数必须显式指定类型,或用
第二次代码的问题:
- 你在初始化参数里用了
T,但未在类级别声明泛型参数,编译器根本不知道T代表什么类型,因此报“找不到T”的错误。
- 你在初始化参数里用了
使用示例
你可以用任意类型初始化这个泛型类:
// 用Int类型初始化 let intTest = Test_Class(value: 10) print(intTest.Test_Field) // 输出10 // 用String类型初始化 let stringTest = Test_Class(value: "Hello") print(stringTest.Test_Field) // 输出Hello // 用Double类型初始化 let doubleTest = Test_Class(value: 3.14) print(doubleTest.Test_Field) // 输出3.14
内容的提问来源于stack exchange,提问作者Runsva
相关产品推荐
相关产品推荐

