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
sがスコープの外に出るときは、デクリメントのカウントにしたい場合は、deinitializer deinit {}
を提供class
にアップグレードする必要があります。
スタティックカウンタの「適切な」ユースケースは非常に限られていることに注意してください。あなたが実際に解決しようとしている問題は、別のハンマーでよりうまく処理される可能性が非常に高いです。ところで
は、あなたが本当に非常に密接に文字列に関連付けられていスウィフトで
Character
として、
sex
を表現するために
Character
を使用すべきではない、ので、彼らがいないフラグを付けるために、字句の目的のために構築され、最適化されています。 Swiftは有効な入力を確認することもできないため、多くの潜在的なバグの原因となります。
sex
の値が
"@"
に誤って渡された場合はどうでしょうか?代わりに、
Bool
タイプ、またはカスタムさらに機能が必要な場合は
enum
'exNames'は空の配列です。 - http://stackoverflow.com/questions/38021844/count-number-of-instances-of-a-class-swiftを見てください。 –