0Pricing
Swift Academy · درس

الدوال النقية والتصميم الخالي من الآثار الجانبية

اكتبوا دوال تُرجع دائمًا الناتج نفسه للمدخل نفسه.

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

مرحبًا بكم

تنتج الدوال النقية دائمًا المخرَج نفسه للمدخَل نفسه، ولا تُحدث أي آثار جانبية. وهي لبنة البناء الأساسية للبرمجة الوظيفية في Swift.

تعريف الدالة النقية

تكون الدالة نقية إذا: • أدى المدخَل نفسه دائمًا إلى المخرَج نفسه • لم تُحدث آثارًا جانبية يمكن ملاحظتها (لا تعديلات، ولا عمليات إدخال وإخراج، ولا حالة عامة) ```swift func add(_ a: Int, _ b: Int) -> Int { a + b } // pure ```

مثال على دالة غير نقية

```swift var total = 0 func addToTotal(_ n: Int) { total += n } // impure — mutates global ``` يؤدي استدعاء هذه الدالة مرتين باستخدام `5` إلى نتائج مختلفة إذا جرى استدعاؤها في سياقات مختلفة.

الشفافية المرجعية

يمكن استبدال استدعاء الدالة النقية بنتيجتها دون تغيير سلوك البرنامج: ```swift let result = add(2, 3) // same as writing 5 ```

فوائد الدوال النقية

• سهلة الاختبار — لا حاجة إلى إعداد أو تنظيف • آمنة للتنفيذ المتوازي — لا توجد حالة مشتركة • قابلة للتركيب — يمكن تسلسلها دون القلق بشأن الآثار الجانبية • قابلة للتخزين المؤقت — تكون المذكرة آمنة

تتيح أنواع القيم في Swift النقاء

بما أن أساليب البنى تتلقى نسخًا، فإنها تميل طبيعيًا إلى النقاء: ```swift struct Vector { var x, y: Double } func scaled(_ v: Vector, by f: Double) -> Vector { Vector(x:v.x*f, y:v.y*f) } ```

عزل الآثار الجانبية

ادفعوا الآثار الجانبية إلى حدود نظامكم: ```swift // Pure core logic: func processOrders(_ orders: [Order]) -> Invoice { ... } // Impure at the edge: func run() { let inv = processOrders(load()); save(inv) } ```

الدوال النقية والاختبار

```swift func test() { let result = add(2, 3) assert(result == 5) // no mocks needed! } ``` لا تحتاج الدوال النقية إلى كائنات وهمية — ما عليكم سوى استدعائها والتحقق من النتيجة.

مثال من الواقع العملي

```swift func discountedPrice(base: Double, discount: Double) -> Double { base * (1 - discount) } let final = discountedPrice(base: 100, discount: 0.2) // 80.0 ```

تركيب الدوال النقية

```swift func double(_ n: Int) -> Int { n * 2 } func addOne(_ n: Int) -> Int { n + 1 } let transform: (Int) -> Int = { addOne(double($0)) } print(transform(5)) // 11 ```

تحقق سريع

أي خاصية تجعل اختبار الدالة سهلًا دون كائنات وهمية؟

مراجعة

أهم النقاط: • النقاء: المدخَل نفسه → المخرَج نفسه، دون آثار جانبية • تتيح الشفافية المرجعية الاستبدال • ادفعوا الآثار الجانبية إلى حدود النظام • يسهل اختبار الدوال النقية وتنفيذها بالتوازي بدرجة كبيرة التالي: الدوال من الرتبة العليا.

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

هل درس «الدوال النقية والتصميم الخالي من الآثار الجانبية» مجاني؟

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

ماذا ستتعلم في «الدوال النقية والتصميم الخالي من الآثار الجانبية»؟

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

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

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

كم من الوقت يستغرق درس «الدوال النقية والتصميم الخالي من الآثار الجانبية»؟

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

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

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

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

  1. الدوال النقية والتصميم الخالي من الآثار الجانبية
  2. الدوال عالية الرتبة: ‏map وflatMap وcompactMap
  3. تركيب الدوال وخطوط المعالجة
  4. التسلسلات الكسولة للكفاءة
← العودة إلى Swift Academy