Avatar ·

كيفية جعل memberwise initializer عامًا بشكل افتراضي للـ structs في Swift؟

مرحبًا بالجميع! بدأت في تعلم Swift وواجهت مشكلة عند العمل مع الـ structs. بشكل افتراضي، يقوم Swift بإنشاء memberwise initializer للـ structs، والذي يسمح بإنشاء instance عن طريق تمرير قيم لجميع الخصائص. ولكن إذا قمت بتعريف struct بمستوى وصول `public`، يصبح memberwise initializer داخليًا (internal) وليس عامًا. ونتيجة لذلك، لا يمكنني استخدام الـ struct من وحدة نمطية أخرى. إليك مثال: ```swift // ModuleA.swift public struct User { public let name: String public let age: Int // memberwise initializer غير مُعلن بشكل صريح } // ModuleB.swift (وحدة نمطية أخرى) let user = User(name: "Alice", age: 30) // خطأ: 'User' cannot be initialized with memberwise initializer ``` أنا