0Pricing
Swift Academy · درس

الدوال والأنواع العامة

اكتب دوالًا وأنواعًا عامة باستخدام معلمات الأنواع مثل . وشاهد كيف يستنتج المترجم الأنواع ويحافظ على أمان الشيفرة وقابليتها لإعادة الاستخدام.

الدوال والأنواع العامة درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 1 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 3 دروس في المجموع.

لماذا الأنواع العامة؟

تتيح لك الأنواع العامة كتابة دالة أو نوع واحد يعمل مع أنواع عديدة مع الحفاظ على أمان الأنواع. وسترى <T> لمعاملات الأنواع، وكيف يجعل الاستنتاج استدعاءات الدوال بسيطة.

دالة عامة

تستخدم الدالة العامة معامل نوع (<T>). ويتحقق المصرّف من الأنواع في كل استدعاء.

// Generic swap for any type T
func swapValues<T>(_ a: inout T, _ b: inout T) {
    let temp = a
    a = b
    b = temp
}

var x = 1, y = 2
swapValues(&x, &y)
print(x, y)  // 2 1

var s1 = "A", s2 = "B"
swapValues(&s1, &s2)
print(s1, s2) // B A

نوع عام

يمكن أن تكون الأنواع عامة أيضًا: عرّف Stack<Element> وأعد استخدامه مع Int وString وغيرهما.

// A minimal generic stack
struct Stack<Element> {
    private var items: [Element] = []
    mutating func push(_ x: Element) { items.append(x) }
    mutating func pop() -> Element? { items.popLast() }
    var top: Element? { items.last }
}

var intStack = Stack<Int>()
intStack.push(10); intStack.push(20)
print(intStack.top ?? -1)   // 20

var textStack = Stack<String>()
textStack.push("hi"); textStack.push("bye")
print(textStack.pop() ?? "?")

استنتاج النوع

غالبًا ما يستنتج Swift الأنواع العامة، لذا نادرًا ما تحتاج إلى تحديدها صراحةً عند الاستدعاء.

// The compiler infers T from arguments/assignments
func makePair<T>(_ a: T, _ b: T) -> (T, T) { (a, b) }

let pair1 = makePair(1, 2)          // T inferred as Int
let pair2 = makePair("a", "b")      // T inferred as String
print(pair1, pair2)

تجنّب التكرار

من دون الأنواع العامة، تكرّر الشيفرة لكل نوع. تزيل الأنواع العامة التكرار مع الحفاظ على الفحوصات الساكنة.

// Non-generic overloads would duplicate logic:
func eqInt(_ a: Int, _ b: Int) -> Bool { a == b }
func eqStr(_ a: String, _ b: String) -> Bool { a == b }
// A single generic can replace both:

ملاحظات وتسمية

ملاحظات:

  • استخدم أسماء واضحة: T أو Element أو أسماء خاصة بالمجال.
  • حافظ على واجهات API صغيرة ومركّزة.
  • التالي: أضف قيودًا باستخدام where لتقييد T عند الحاجة.

معنى <T>

تحقق سريع: ماذا يعني <T> في الدالة العامة؟

خلاصة

الخلاصة: عرّف دوال عامة باستخدام <T>، وأنشئ أنواعًا عامة مثل Stack<Element>. يستنتج Swift الأنواع عند الاستدعاء، مما يحافظ على قابلية إعادة استخدام الشيفرة وأمانها.

الأسئلة الشائعة

هل درس «الدوال والأنواع العامة» مجاني؟

نعم — نص درس «الدوال والأنواع العامة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 3 دروس في المجموع.

ماذا ستتعلم في «الدوال والأنواع العامة»؟

اكتب دوالًا وأنواعًا عامة باستخدام معلمات الأنواع مثل . وشاهد كيف يستنتج المترجم الأنواع ويحافظ على أمان الشيفرة وقابليتها لإعادة الاستخدام. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 3.

كم من الوقت يستغرق درس «الدوال والأنواع العامة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الدوال والأنواع العامة
  2. القيود (where) والاستدلال على الأنواع
  3. الخوارزميات العامة على المجموعات
← العودة إلى Swift Academy