You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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
    }
}

错误原因解析

  1. 第一次代码的问题:

    • Swift要求初始化参数必须显式指定类型,或用_作为匿名参数名,你既没写类型也没加_,导致编译器无法识别参数类型。
    • Test_Field初始化为0会默认锁定为Int类型,即便参数类型修复,后续也无法赋值其他类型。
  2. 第二次代码的问题:

    • 你在初始化参数里用了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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:03:18