Sobes.tech
Junior

Kun je een structuur erven van meerdere ouders?

sobes.tech AI

Antwoord van AI

Nee. In Objective-C en Swift ondersteunen geen structuren meervoudige overerving.

In Swift beschikken structuren over aanzienlijke mogelijkheden, waaronder protocollen, extensies, methoden, berekende eigenschappen, opgeslagen eigenschappen en initializers.

Echter, om vergelijkbare doelen in Swift te bereiken, worden gebruikt:

  • Protocollen: Definiëren een set van vereisten (methoden, eigenschappen, initializers). Een type (structuur of klasse) kan voldoen aan één of meerdere protocollen, waardoor het hun "gedrag" overneemt.

    // Voorbeeld van een protocol
    protocol Animal {
        var name: String { get }
        func makeSound()
    }
    
    // Structuur die voldoet aan het protocol
    struct Dog: Animal {
        let name: String
    
        func makeSound() {
            print("Woef!")
        }
    }
    
  • Extensies: Voeg nieuwe functies toe aan een bestaand type zonder de broncode te wijzigen.

    // Voorbeeld van een extensie voor String
    extension String {
        func reversedWords() -> String {
            let words = self.split(separator: " ")
            return words.reversed().joined(separator: " ")
        }
    }
    
    // Gebruik van de extensie
    let sentence = "Hallo wereld"
    print(sentence.reversedWords()) // Uitvoer: wereld Hallo
    

Swift-classes ondersteunen enkelvoudige overerving van één ouderklasse, maar kunnen meerdere protocollen implementeren.