0Pricing
Swift Academy · درس

التحميل الزائد على المعاملات ومجموعات الأولوية

أعد تحميل المعاملات المضمّنة لأنواعك، وعرّف مجموعات الأولوية لتحليل العبارات كما هو مقصود. وحافظ على تصاميم بسيطة وقابلة للتوقّع.

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

لماذا تخصّص المعاملات؟

تتيح لك Swift تحميل المعاملات فوقياً لأنواعك وإنشاء معاملات جديدة. استخدم ذلك باعتدال: فضّل الوضوح، ووثّق السلوك، وحدد الأسبقية لتجنب المفاجآت.

التحميل الزائد لمعامل مدمج

لتحميل معامل موجود بشكل زائد، اكتب دالة حرة بالرمز نفسه ونوعك. حافظ على دلالات متوقعة (مثل أن يضيف + القيم).

struct Vector2D: CustomStringConvertible, Equatable {
    var x: Double
    var y: Double
    var description: String { "(\(x), \(y))" }
}
func + (lhs: Vector2D, rhs: Vector2D) -> Vector2D {
    Vector2D(x: lhs.x + rhs.x, y: lhs.y + rhs.y)
}
func == (lhs: Vector2D, rhs: Vector2D) -> Bool {
    lhs.x == rhs.x && lhs.y == rhs.y
}
let a = Vector2D(x: 1, y: 2)
let b = Vector2D(x: 3, y: 4)
let c = a + b
print(c)     // (4.0, 6.0)

العامل المخصّص وأولويته

عرّف precedencegroup واربطها بالعامل. تجعل الترابطية من اليمين التعبير 2 ** 3 ** 2 يُحلَّل على أنه 2 ** (3 ** 2).

// Define power operator ** with right-associative precedence
precedencegroup PowerPrecedence {
    higherThan: MultiplicationPrecedence
    associativity: right
}
infix operator ** : PowerPrecedence

// Simple integer exponent (education-only; no overflow checks)
func ** (base: Int, exp: Int) -> Int {
    guard exp >= 0 else { return 0 }   // keep it simple for demo
    if exp == 0 { return 1 }
    var result = 1
    for _ in 0..<exp { result *= base }
    return result
}
print(2 ** 3)          // 8
print(2 ** 3 ** 2)     // 2 ** (3 ** 2) = 2 ** 9 = 512 (right-assoc)

عوامل prefix/postfix

يمكنكم تعريف عوامل prefix/postfix. خصّصوا استخدامها للمجالات الرياضية الواضحة، وتجنّبوا المعاني غير المتوقعة.

prefix operator √
prefix func √ (x: Double) -> Double { x.squareRoot() }

postfix operator !
postfix func ! (x: Bool) -> Bool { !x }  // purely demo; avoid confusing overrides

print(√9)     // 3.0
print(true!)  // false (demo only — don't ship this)

الأولوية عمليًا

حدّدوا أولوية العامل بعناية مقارنةً بالعوامل المضمّنة، مثل MultiplicationPrecedence. اختبروا التعبيرات للتأكد من وضوحها وتوافقها مع الغرض المقصود.

// Demonstrate how precedence affects parsing
// Our PowerPrecedence is higher than Multiplication.
// So this parses as: 2 * (3 ** 2) = 18
let r1 = 2 * 3 ** 2
print(r1)

// Compare if we had lower precedence (hypothetical):
// Then it would parse as (2 * 3) ** 2 = 36

أفضل الممارسات

الإرشادات:

  • فضّلوا الأساليب للإجراءات غير المعتادة، وخصّصوا العوامل للعمليات الرياضية أو البتّية المألوفة.
  • طابقوا توقعات المستخدمين (+ للجمع و* للضرب).
  • وثّقوا العوامل المخصّصة وحافظوا على عددها محدودًا.
  • حدّدوا الأولوية والترابطية لتجنّب التحليل الملتبس.

التصريح عن العوامل بطريقة صحيحة

تحقق سريع: ما الطريقة الصحيحة لإضافة عامل جديد مع مجموعة أولوية؟

الخلاصة

الخلاصة: أعيدوا تعريف العوامل فقط عندما تكون دلالاتها واضحة؛ وعرّفوا مجموعات الأولوية والترابطية للتحكم في التحليل؛ واختبروا التعبيرات للتأكد من وضوحها.

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

هل درس «التحميل الزائد على المعاملات ومجموعات الأولوية» مجاني؟

نعم — نص درس «التحميل الزائد على المعاملات ومجموعات الأولوية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 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. الرموز الفرعية والفهارس المخصّصة مجددًا
  3. اشتقاقات Hashable/Equatable/Comparable
← العودة إلى Swift Academy