جنریک ها (Swift Generics)
«جنریک ها (Generics)» یعنی کد قابل استفاده دوباره با «نوعِ جایگزین». بنابراین یک بار می نویسی و با هر نوعی کار می کند. مثل قالب دفتر که با هر برگه ای پر می شود.
توابع جنریک و پارامتر نوع
با جنریک ها، تابع و نوعِ انعطاف پذیر می سازیم. «پارامتر نوع (Type Parameter)» مثل T یک اسم موقت است. سپس، در زمان استفاده، نوعِ واقعی جایگزین می شود.
func swapTwo<T>(_ a: inout T, _ b: inout T) {
let tmp = a;
a = b;
b = tmp;
}
var x = 1;
var y = 2;
swapTwo(&x, &y);
print(x);
print(y);
نکته: از جنریک ها استفاده کن تا کد تکراری حذف شود و خطا کمتر شود.
کران ها و where در جنریک ها
گاهی لازم است T را محدود کنیم. «کران (Constraint)» می گوید T باید ویژگی هایی داشته باشد؛ مثلاً قابل مقایسه باشد. سپس می توان از عملگرهای مرتبط استفاده کرد.
func minValue<T: Comparable>(_ a: T, _ b: T) -> T {
if a < b {
return a;
}
return b;
}
print(minValue(3, 7));
print(minValue("b", "a"));
گام های تمرینی
- یک ساختار جنریک
Box<T>بساز و مقدار نگه دار. - برای
IntوStringامتحانش کن. - یک تابع جنریک فیلتر بنویس و شرط بده.
لینک های داخلی
برای درک کاملِ جنریک های سوئیفت کنار پروتکل ها و چندریختی مطالعه کن. همچنین صفحه افزونه ها را ببین.
جمع بندی سریع
- جنریک ها تکرار کد را حذف می کنند.
- پارامتر نوع فقط اسمِ موقت نوع است.
- با کران، استفاده امن تری داری.
whereشرط های دقیق تر می دهد.