Avatar ·

ما الفرق بين static func و class func في Swift؟

مرحبًا! بدأت تعلم Swift ووجدت طريقتين متشابهتين لتعريف الطرق التي تنتمي إلى النوع نفسه وليس إلى مثيله. باستخدام الكلمة المفتاحية `static` قبل `func`، يمكنني استدعاء الطريقة دون إنشاء كائن. لكنني رأيت أيضًا أنه يمكن استخدام `class func` لنفس الأغراض. على سبيل المثال: ```swift struct MyStruct { static func sayHello() { print("مرحبًا من static!") } } class MyClass { class func sayHello() { print("مرحبًا من class!") } } ``` كلا الاستدعاءين يعملان: `MyStruct.sayHello()` و `MyClass.sayHello()`. ما الفرق الجوهري بينهما؟ لماذا لا يمكن استخدام `static` فقط في كل مكان؟ وهل هناك أي قيود على استخدام `static` في الفئات؟ سأكون ممتنًا لشرح مفصل مع أمثلة، خاصةً عن الوراثة، حيث سمعت أن هذه هي النقطة الأساسية.