ما الفرق بين 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` في الفئات؟ سأكون ممتنًا لشرح مفصل مع أمثلة، خاصةً عن الوراثة، حيث سمعت أن هذه هي النقطة الأساسية.