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

如何为Swift类的每个实例生成唯一递增ID

给Robot类实现唯一递增ID的简单方案

嘿,你可能记错啦——Swift 4及后续版本是完全支持类存储属性的!直接用这个特性就能轻松实现你要的功能,根本不用绕弯子。

下面是最直接的实现代码:

class Robot {
    // 类级别的私有存储属性,用来追踪当前已分配的最大ID
    private static var maxId = 0
    // 每个实例的唯一ID,初始化后不可修改
    let id: Int
    
    init() {
        // 初始化时先递增maxId,再赋值给当前实例的id
        Robot.maxId += 1
        self.id = Robot.maxId
    }
}

// 测试一下效果
let r1 = Robot()
print(r1.id) // 输出 1
let r2 = Robot()
print(r2.id) // 输出 2
let r3 = Robot()
print(r3.id) // 输出 3

补充说明:

  • 这里用static var而不是class var,是因为static属于“final”类属性,不需要子类重写;如果你的Robot类需要被继承,且子类需要自定义ID生成逻辑,可以把static改成class,不过记得子类必须重写这个属性。
  • 把maxId设为private是为了保证外部代码不能随意修改它,避免ID混乱,符合封装原则。

如果之前查到的资料说Swift只有类级计算属性,那大概率是早期Swift版本(比如Swift 1.x)的过时内容了,Swift 2及以后就已经支持类存储属性,Swift 4当然完全没问题~

内容的提问来源于stack exchange,提问作者Maury Markowitz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:16:00