Junior
Ar galima paveldėti struktūrą iš kelių tėvų?
sobes.tech AI
Atsakymas iš AI
Ne. Objective-C ir Swift struktūros ne palaiko daugiagimystę.
Swift struktūros turi reikšmingas galimybes, įskaitant protokolus, išplėtimus, metodus, skaičiuojamas savybes, saugomus savybes ir inicializatorius.
Tačiau, siekiant pasiekti panašius tikslus Swift, naudojami:
-
Protokolai: Apibrėžia reikalavimų rinkinį (metodus, savybes, inicializatorius). Tipas (struktūra ar klasė) gali atitikti vieną ar kelis protokolus, įgyjant jų "elgesį".
// Protokolo pavyzdys protocol Animal { var name: String { get } func makeSound() } // Struktūra, atitinkanti protokolą struct Dog: Animal { let name: String func makeSound() { print("Au au!") } } -
Išplėtimas (Extensions): Prideda naujas funkcijas prie esamo tipo be jo šaltinio kodo keitimo.
// Išplėtimo pavyzdys String tipui extension String { func reversedWords() -> String { let words = self.split(separator: " ") return words.reversed().joined(separator: " ") } } // Išplėtimo naudojimas let sentence = "Labas pasauli" print(sentence.reversedWords()) // Išvestis: pasauli Labas
Swift klasės palaiko viengubą paveldėjimą iš vienos tėvų klasės, tačiau gali įgyvendinti kelis protokolus.