0Pricing
Swift Academy · درس

التحكم في الوصول (public/internal/fileprivate/private)

تحكّم في ظهور واجهات API عبر الملفات والوحدات باستخدام public وinternal (الافتراضي) وfileprivate وprivate. وتعلّم متى تكشف الواجهة ومتى تخفيها.

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

نظرة عامة على مستويات الوصول

مستويات الوصول في Swift:

  • public: مرئي للوحدات الأخرى
  • internal (الافتراضي): مرئي داخل الوحدة نفسها
  • fileprivate: يقتصر على ملف المصدر هذا
  • private: يقتصر على النطاق المحتوي (type/extension)

internal (الافتراضي)

يؤدي حذف مُحدِّد الوصول إلى جعل التصريحات internal، بحيث يمكن استخدامها في أي مكان داخل الوحدة نفسها (حزمة أو هدف تطبيق).

struct Greeter {            // internal by default
    func hello(_ name: String) -> String { "Hello, \\(name)" }
}
let g = Greeter()
print(g.hello("Ada"))

نطاق واجهة API العامة

حدّد واجهات API باستخدام public لكشفها للوحدات الأخرى؛ واترك الأدوات المساعدة internal للحفاظ على نطاق صغير.

public struct Math {
    public static func add(_ a: Int, _ b: Int) -> Int { a + b }
    // internal helper remains hidden outside the module
    static func double(_ x: Int) -> Int { x * 2 }
}
print(Math.add(1,2))

نطاق fileprivate

يقيّد fileprivate الاستخدام بملف المصدر نفسه. وهو مناسب لتقسيم الأدوات المساعدة الخاصة بنوع داخل ملف واحد.

// In FileA.swift
fileprivate func hiddenInFile() { print("Only in this file") }

struct A {
    func call() { hiddenInFile() } // OK: same file
}
A().call()

نطاق private

يحدّ private الوصول إلى النطاق المحتوي (type/extension). استخدمه لحماية الثوابت الداخلية بإحكام.

struct Box {
    private var value = 0     // visible only inside Box declaration
    mutating func set(_ v: Int) { value = v } // controlled write
    func get() -> Int { value }                // controlled read
}
var b = Box()
b.set(7)
print(b.get())
// b.value = 3   // error: 'value' is private

نصائح التصميم

نصائح التصميم:

  • اجعل internal هو الافتراضي، ولا تكشف باستخدام public إلا ما يحتاج إليه المستهلكون.
  • يُفضّل استخدام private/fileprivate للأدوات المساعدة للحفاظ على واجهات API صغيرة.
  • لا يمكن أن يكون مستوى وصول العضو أوسع من مستوى وصول نوعه.

الوصول الافتراضي

تحقق سريع: ما مستوى الوصول الافتراضي؟

خلاصة

الخلاصة: استخدم public لكشف الوحدات، وأبقِ معظم العناصر internal، وأخفِ التفاصيل باستخدام fileprivate/private لحماية الثوابت الداخلية.

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

هل درس «التحكم في الوصول (public/internal/fileprivate/private)» مجاني؟

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

ماذا ستتعلم في «التحكم في الوصول (public/internal/fileprivate/private)»؟

تحكّم في ظهور واجهات API عبر الملفات والوحدات باستخدام public وinternal (الافتراضي) وfileprivate وprivate. وتعلّم متى تكشف الواجهة ومتى تخفيها. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «التحكم في الوصول (public/internal/fileprivate/private)»؟

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

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

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

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

  1. تهيئة Memberwise والدوال mutating
  2. الوراثة وإعادة التعريف وfinal
  3. التحكم في الوصول (public/internal/fileprivate/private)
← العودة إلى Swift Academy