ویژگی های کلاس (Class Properties)
در کلاس ها، «ویژگی (Property)» جایی برای نگهداری وضعیت است. برخی ویژگی ها برای هر شیء هستند. برخی هم برای خود کلاس اند. به ویژگی های مربوط به خود کلاس، «ویژگی نوع (Type Property)» می گوییم و با static می سازیم.
انواع ویژگی ها در کلاس
ما دو دسته مهم داریم: «ذخیره ای (Stored)» و «محاسبه ای (Computed)». ذخیره ای واقعاً مقدار نگه می دارد. محاسبه ای هر بار مقدار را حساب می کند. همچنین، با static یک ویژگی مشترک میان همه نمونه ها می سازیم.
class User {
var name: String;
var greeting: String {
return "Hello, \(name)";
}
static var appName: String = "MyApp";
init(name: String) {
self.name = name;
}
}
نکته: greeting محاسبه ای است؛ همیشه از name مقدار تازه می سازد. همچنین appName بین همه کاربران مشترک است.
ناظرهای ویژگی: willSet و didSet
«ناظر (Observer)» تغییر را گوش می دهد. willSet قبل از تغییر اجرا می شود. didSet بعد از تغییر اجرا می شود. این برای نمایش اعلان، ذخیره لاگ، یا همگام سازی عالی است.
class Player {
var score: Int = 0 {
willSet {
print("About to set to \(newValue)");
}
didSet {
print("Changed from \(oldValue) to \(score)");
}
}
}
let p = Player();
p.score = 10;
گام های عملی سریع
- یک کلاس بساز و یک ویژگی ذخیره ای تعریف کن.
- یک ویژگی محاسبه ای اضافه کن تا متن دوستانه بسازد.
- با
staticیک نام برنامه مشترک تعیین کن. - برای یک ویژگی،
willSetوdidSetبنویس.
لینک های مرتبط داخلی
برای دیدن تفاوت های بنیادین، سر بزن به کلاس vs ساختار. سپس ادامه کار با متدهای کلاس است. همچنین صفحه ویژگی های کلاس را نشانه گذاری کن.
جمع بندی سریع
- ذخیره ای مقدار نگه می دارد.
- محاسبه ای هر بار نتیجه می سازد.
staticبرای ویژگی مشترک است.- با ناظرها تغییرات را کنترل کن.