Sobes.tech
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.