دالة عامّة
func swapValues<T>(_ a: inout T, _ b: inout T) {
let temp = a
a = b
b = temp
}
var x = 1, y = 2
swapValues(&x, &y) // x=2, y=1
<T> نوع نائب يُحدَّد عند الاستدعاء، وinout للتعديل بالمرجع.
نوع عامّ
struct Stack<Element> {
private var items: [Element] = []
mutating func push(_ item: Element) { items.append(item) }
mutating func pop() -> Element? { items.popLast() }
}
var s = Stack<Int>()
s.push(1)
s.push(2)
print(s.pop()!) // 2
القيود على الأنواع
func largest<T: Comparable>(_ list: [T]) -> T? {
return list.max()
}
print(largest([3, 7, 2])!) // 7
<T: Comparable> يقصر T على الأنواع القابلة للمقارنة.
💡 Generics أساس المجموعات (Array، Dictionary) وكتابة كود قابل لإعادة الاستخدام بأمان.
🎯 التالي: معالجة الأخطاء.