0Pricing
Swift Academy · درس

المعلمات الافتراضية والمتغيرة

حدّد قيمًا افتراضية واقبل أعدادًا متغيرة من الوسائط

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

مرحبًا

تتيح قيم المعلمات الافتراضية للمتصلين حذف الوسائط التي لا يحتاجون إلى تخصيصها. وتقبل المعلمات متغيرة العدد أي عدد من الوسائط. ويقلل كلاهما من التعليمات المتكررة ويحسّن واجهات API.

قيم المعلمات الافتراضية

```swift func log(_ message: String, level: String = "INFO") { print("[\(level)] \(message)") } log("Server started") // [INFO] Server started log("Disk full", level: "ERROR") // [ERROR] Disk full ``` يجب وضع القيم الافتراضية بعد المعلمات المطلوبة.

قيم افتراضية متعددة

```swift func connect(host: String, port: Int = 443, useTLS: Bool = true) {} connect(host: "api.example.com") connect(host: "api.example.com", port: 8080) connect(host: "api.example.com", port: 80, useTLS: false) ``` يمكن للمتصلين تجاوز أي مجموعة فرعية من المعلمات التي لها قيم افتراضية.

المعلمات متغيرة العدد

تقبل المعلمة متغيرة العدد صفرًا أو أكثر من القيم من النوع نفسه: ```swift func sum(_ numbers: Int...) -> Int { numbers.reduce(0, +) } print(sum(1, 2, 3)) // 6 print(sum(10, 20, 30, 40)) // 100 ``` داخل الدالة، تكون `numbers` مصفوفة من النوع `[Int]`.

معلمة واحدة فقط متغيرة العدد لكل دالة

تسمح Swift بمعلمة واحدة فقط متغيرة العدد لكل دالة، ولا يلزم أن تكون الأخيرة منذ Swift 5.4: ```swift func format(_ template: String, args: String...) -> String { var result = template for arg in args { result = result.replacingOccurrences(of: "%s", with: arg) } return result } ```

دمج القيم الافتراضية والمعلمات متغيرة العدد

```swift func build(separator: String = ", ", _ items: String...) -> String { items.joined(separator: separator) } build("apple", "banana", "cherry") // "apple, banana, cherry" build(separator: " | ", "one", "two", "three") // "one | two | three" ```

تمرير مصفوفة إلى معلمة متغيرة العدد

لا يمكنك تمرير مصفوفة مباشرةً إلى معلمة متغيرة العدد: ```swift let nums = [1, 2, 3] // sum(nums) ❌ — won't compile ``` فككها باستخدام `...` (لا يأتي نشر التسلسلات باستخدام ... مدمجًا في Swift 5.4+؛ استخدم reduce/spread بنفسك): ```swift let total = nums.reduce(0, +) ```

الإغلاقات الافتراضية

تعمل القيم الافتراضية مع معلمات الإغلاقات أيضًا: ```swift func retry(count: Int = 3, action: () -> Bool) {} retry { fetchData() } // count defaults to 3 retry(count: 5) { fetchData() } ``` يظل بناء جملة الإغلاق اللاحق مطبقًا عند استخدام القيم الافتراضية.

توثيق القيم الافتراضية

علّق على القيم الافتراضية أو سمِّها بوضوح حتى يعرف المتصلون ما يمكن توقعه: ```swift /// Sends a request. Timeout defaults to 30 seconds. func send(request: URLRequest, timeout: TimeInterval = 30.0) {} ``` يمنع التوثيق الجيد المتصلين من توفير القيمة الافتراضية صراحةً.

نمط واقعي: واجهات شبيهة بـ print

إن `print` القياسية في Swift متغيرة العدد ولها قيم افتراضية أيضًا: ```swift // Simplified signature: func print(_ items: Any..., separator: String = " ", terminator: String = "\n") print("a", "b", "c") // a b c print("x", "y", separator: "-") // x-y print("no newline", terminator: "") ```

تحقق سريع

ما النوع الذي تكون عليه معلمة `Int...` متغيرة العدد داخل الدالة؟

مراجعة

أهم النقاط: • تجعل القيم الافتراضية المعلمات اختيارية عند موضع الاستدعاء • يجب أن تأتي القيم الافتراضية بعد المعلمات المطلوبة • تقبل المعلمات متغيرة العدد (`Type...`) صفرًا أو أكثر من القيم، وتصبح مصفوفة داخل الدالة • معلمة واحدة فقط متغيرة العدد لكل دالة • ادمجهما معًا لإنشاء واجهات API مرنة ونظيفة التالي: معلمات `inout` وإرجاع قيم متعددة.

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

هل درس «المعلمات الافتراضية والمتغيرة» مجاني؟

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

ماذا ستتعلم في «المعلمات الافتراضية والمتغيرة»؟

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

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

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

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

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

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

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

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

  1. تسميات الوسائط وأسماء المعلمات
  2. المعلمات الافتراضية والمتغيرة
  3. معلمات In-Out والقيم المرجعة المتعددة
  4. الدوال كقيم من الدرجة الأولى
← العودة إلى Swift Academy