gpt4 book ai didi

swift - 快速计算结构内的实例数

转载 作者:行者123 更新时间:2023-11-28 10:14:19 24 4
gpt4 key购买 nike

我是 Swift 的新手,我搞不懂这个。我需要计算在结构中创建的实例数。因为我创建了 3 个实例,我怎样才能让程序告诉我有 3 个?我最后尝试了 exNames.count,但这不起作用......谢谢!

struct People {
let name: String
var age: Int
let sex: Character
}

var heather = People(name: "Heather", age: 32, sex: "F")
var peter = People(name: "Peter", age: 34, sex: "M")
var scott = People(name: "Scott", age: 27, sex: "M")

let exNames = [People]()

exNames.count

最佳答案

您想在 People 结构上使用静态变量。但是,这确实需要覆盖默认初始化程序。

struct People
{
static var instances = 0

let name:String
var age:Int
let sex:Character

init(name:String, age:Int, sex:Character)
{
self.name = name
self.age = age
self.sex = sex

People.instances += 1
}
}

var heather = People(name: "Heather", age: 32, sex: "F")
var peter = People(name: "Peter", age: 34, sex: "M")
var scott = People(name: "Scott", age: 27, sex: "M")

let exNames = [People]()
/* exNames.count only gives the number of People that are
contained in this particular array, which is zero. */

print(People.instances) // 3

如果您想在 struct 超出范围时减少计数,您需要升级到 class,它提供了一个析构器 deinit {}

请注意,静态计数器的“正确”用例非常有限。很可能您实际尝试解决的问题用不同的锤子会更好。

顺便说一句,你真的不应该使用 Character 来表示 sex ,因为 Swift 中的 Character 与字符串紧密相关,因此它们是为词法目的而构建和优化的,而不是为了标记。它还为许多潜在的错误打开了大门,因为 Swift 也无法验证有效输入(如果有人不小心将 sex 值传递给 "@" 怎么办?)相反,使用内置的 Bool 类型,或自定义enum 如果您需要更多功能。

关于swift - 快速计算结构内的实例数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43337059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com