Sobes.tech
Junior — Middle

Je možné v deklarácii uviesť protokol rozšírenia s odkazom na iný protokol, aby zdedil jeho vlastnosti?

sobes.tech AI

Odpoveď od AI

V Swiftu môžu protokoly dediť vlastnosti a metódy od iných protokolov. Avšak protokoly rozšírení (extension protocols) nie sú deklarované samostatne — rozšírenia sa používajú na existujúce protokoly.

Ak chcete, aby jeden protokol dedil od iného, deklarujete to explicitne:

protocol A {
    func methodA()
}

protocol B: A {
    func methodB()
}

Tu protokol B dedí od protokolu A a vyžaduje implementáciu oboch metód.

Rozšírenia protokolov (extension) umožňujú pridanie implementácií metód, ale nie deklarovanie nového protokolu s dedičstvom. Preto je možné deklarovať extension protokol s dedičstvom vlastností iného protokolu iba prostredníctvom bežného dedičstva protokolov, nie prostredníctvom rozšírení.