Sobes.tech
Junior

Kas on võimalik pärida struktuur mitmest vanemast?

sobes.tech AI

Vastus AI-lt

Ei. Objective-C ja Swift struktuurid ei toeta mitmekordset pärilust.

Swiftis on struktuuridel olulised võimalused, sealhulgas protokollid, laiendid, meetodid, arvutatavad omadused, salvestatud omadused ja initsialiseerijad.

Kuid, sarnaste eesmärkide saavutamiseks Swiftis kasutatakse:

  • Protokollid: Määratlevad nõuete kogumi (meetodid, omadused, initsialiseerijad). Tüüp (struktuur või klass) võib vastata ühele või mitmele protokollile, omandades nende "käitumise".

    // Protokolli näide
    protocol Animal {
        var name: String { get }
        func makeSound()
    }
    
    // Struktuur, mis vastab protokollile
    struct Dog: Animal {
        let name: String
    
        func makeSound() {
            print("Hau hau!")
        }
    }
    
  • Laiendused (Extensions): Lisavad uusi funktsioone olemasolevale tüübile, ilma selle lähdekoodi muutmata.

    // Laienduse näide Stringile
    extension String {
        func reversedWords() -> String {
            let words = self.split(separator: " ")
            return words.reversed().joined(separator: " ")
        }
    }
    
    // Laienduse kasutamine
    let sentence = "Tere maailm"
    print(sentence.reversedWords()) // Väljund: maailm Tere
    

Swift klassid toetavad lihtsat pärilust ühe klassi kaudu, kuid võivad rakendada mitmeid protokolle.