Avatar ·

ما الفرق بين الدوال/الخصائص static و class في Swift؟

مرحبًا بالجميع! أنا أتعلم Swift ولا أستطيع فهم الفرق بين الكلمتين المفتاحيتين `static` و `class` عندما نعلن عن دوال أو خصائص داخل class. في التوثيق مكتوب أن كلاهما يشير إلى النوع نفسه وليس إلى instance، لكن ما الفرق إذًا؟ على سبيل المثال، لدي هذا الكود: ```swift class MyClass { static var staticProperty = "خاصية ثابتة" class var classProperty: String { return "خاصية صنفية" } static func staticMethod() { print("دالة ثابتة") } class func classMethod() { print("دالة صنفية") } } ``` أرى أن كلاً من `static` و `class` يسمحان باستدعاء الدوال دون إنشاء instance من class: `MyClass.staticMethod()` و `MyClass.classMethod()`. لكن لماذا إذًا توجد كلمتان مفتاحيتان مختلفتان؟ في أي الحالات يجب استخدام `static` وأيها `class`؟ ما يربكني بشكل خاص هو أنه في الهياكل والتعدادات يمكن استخدام `static` فقط، بينما في class