擴展聲明用于擴展一個現(xiàn)存的類,結(jié)構(gòu)體,枚舉的行為。擴展聲明以關(guān)鍵字extension開始,遵循如下的規(guī)則:
extensiontype:adopted protocols{
declarations
}
一個擴展聲明體包括零個或多個聲明。這些聲明可以包括計算型屬性,計算型靜態(tài)屬性,實例方法,靜態(tài)和類方法,構(gòu)造器, 下標(biāo)腳本聲明,甚至其他結(jié)構(gòu)體,類,和枚舉聲明。擴展聲明不能包含析構(gòu)器,協(xié)議聲明,存儲型屬性,屬性監(jiān)測器或其他 的擴展屬性。詳細討論和查看包含多種擴展聲明的實例,參見擴展一節(jié)。
擴展聲明可以向現(xiàn)存的類,結(jié)構(gòu)體,枚舉內(nèi)添加一致的協(xié)議。擴展聲明不能向一個類中添加繼承的類,因此 type-inheritance-clause是一個只包含協(xié)議列表的擴展聲明。
屬性,方法,現(xiàn)存類型的構(gòu)造器不能被它們類型的擴展所重寫。
擴展聲明可以包含構(gòu)造器聲明,這意味著,如果你擴展的類型在其他模塊中定義,構(gòu)造器聲明必須委托另一個在 那個模塊里聲明的構(gòu)造器來恰當(dāng)?shù)某跏蓟?/p>
擴展(Extension)聲明語法
擴展聲明 → extension 類型標(biāo)識 類型繼承子句 可選 extension-body
extension-body → { 聲明(Declarations)列表 可選 }