کلاس vs ساختار (Class vs Struct)
اینجا می خواهیم فرق «کلاس» و «ساختار» را ساده ببینیم. «کلاس (Class)» مرجع محور است و هویت مشترک دارد. «ساختار (Struct)» مقداری است و کپی مستقل می سازد. برای داده های ساده Struct عالی است؛ اما برای هویت مشترک، ارث بری، یا سازگاری Objective-C از Class استفاده کن.
تفاوت های کلیدی کلاس و ساختار
- کپی: ساختار کپی مستقل می سازد؛ کلاس فقط مرجع را می دهد.
- ارث بری: کلاس ارث بری دارد؛ ساختار ندارد.
- هویت: کلاس هویت مشترک دارد؛ ساختار با مقدار سنجیده می شود.
مثال عملی: رفتار مقداری و مرجعی
کد زیر همان ایده صفحه منبع است؛ با فرمتی تمیز. اول ساختار را کپی می کنیم. سپس تغییر روی کپی را می بینیم. بعد دو مرجع به یک شی از کلاس می سازیم و تغییر را بررسی می کنیم.
struct Point {
var x: Int;
var y: Int;
}
class Counter {
var value: Int;
init() {
value = 0;
}
}
var p1 = Point(x: 1, y: 2);
var p2 = p1;
p2.x = 9;
let c1 = Counter();
let c2 = c1;
c2.value = 7;
نکته: در Struct، تغییر p2 روی p1 اثر ندارد. اما در Class، c1 و c2 یک شی مشترک هستند.
راهنمای انتخاب سریع
- داده ساده و کوچک داری؟ Struct را برگزین.
- نیاز به ارث بری یا هویت داری؟ Class مناسب است.
- سازگاری Objective-C می خواهی؟ سراغ Class برو.
لینک های مرتبط داخلی
اگر تازه ای، اول صفحه ساختارها (Structs) را ببین. سپس به کلاس ها/اشیا برو. همچنین این صفحه کلاس vs ساختار را نشانه گذاری کن.
جمع بندی سریع
- Struct کپی مستقل می سازد.
- Class مرجع مشترک می دهد.
- ارث بری فقط در Class است.
- برای داده ساده، Struct بهتر است.