Junior — Middle
Kas saaksite selgitada Enum kontseptsiooni kaudse pärimise või kaudsete sidemetega?
sobes.tech AI
Vastus AI-lt
iOS ja Swift kontekstis ei toeta Enum-ideed (loendite) pärandamist traditsioonilises mõttes, see tähendab, et ei saa luua Enum-i, mis pärib otse teisest Enum-ist.
Kuid, võib rääkida kaudsetest sidemetest või kaudsetest pärandustest järgmiselt:
-
Protokollid: Enum võib vastata protokollile, mis määratleb nõuete kogumi. Sel viisil saavad mitu Enum-i rakendada sama protokolli, pakkudes ühiseid funktsioone.
-
Seotud väärtused ja sisseehitatud Enum-id: Võimalik luua keerukaid struktuure Enum-idega, kus üks Enum sisaldab teist seotud väärtusena või sisseehitatud tüüpi.
Näide protokolli kasutamisest Enum-iga:
protocol Describable {
var description: String { get }
}
enum Direction: Describable {
case north, south, east, west
var description: String {
switch self {
case .north: return "Põhi"
case .south: return "Lõuna"
case .east: return "Ida"
case .west: return "Lääs"
}
}
}
enum Status: Describable {
case success, failure
var description: String {
switch self {
case .success: return "Edu"
case .failure: return "Viga"
}
}
}
Seega, kuigi Enum-ide otsest pärandamist ei ole, saab sarnast korraldust saavutada protokollide ja koostise kaudu.