Eigenschaften in Swift

Als Einstieg in dieses Thema möchte ich mit einem Beispiel beginnen. Stellen wir uns eine Klasse “Box” vor:

class Box {

}

Diese Box wird definiert über ihre Länge, ihre Breite und ihre Höhe. Das sind ihre Eigenschaften (Properties), wobei die dazugehörigen Werte den Variablen length, width und height zugeordnet werden sollen:

class Box {

    // (stored) properties
    var length: Int = 4
    var width : Int = 2
    var height: Int = 2

}

In der Klasse „Box“ weise ich den Variablen Standardwerte zu, weswegen keine Init-Funktion geschrieben werden muss. Wem das Konzept der Init-Funktionen nicht klar sein sollte, kann sich in diesem Artikel einen Überblick dazu verschaffen.

Hier handelt es sich um Stored Properties, mithin um eine Variable (Schlüsselwort: var), die Bestandteil einer Klasse (bzw. einer Instanz einer Klasse) ist. Dabei kann auch eine Konstante eine Stored Property sein (Schlüsselwort: let).

Nachfolgend ein Beispiel mit Konstanten in einer Struktur:

struct Rectangle {

    // (stored) properties
    let a: Int = 10
    let b: Int = 6

}

Halten wir also fest: Man spricht

  • bei Verwendung einer Variable von variable stored properties und
  • bei Verwendung einer Konstanten von constant stored properties.

Des Weiteren existieren Computed Properties. Dazu möchte ich das obige Beispiel aufgreifen, ergänzt um eine Methode, die das Volumen der Box berechnen soll:

class Box {

    var length: Int = 4
    var width : Int = 2
    var height: Int = 2

    func calculateVolume() -> Int {
        return length * width * height
    }   
}

var myBox = Box()
myBox.calculateVolume() // -> 16

Anstatt nun das Volumen der Box über eine Methode zu ermitteln, kann man auch eine computed property nutzen:

class Box {

    var length: Int = 4
    var width : Int = 2
    var height: Int = 2

    // computed property
    var volume: Int {
        get {
            return length * width * height
        }
    }   
}

var myBox = Box()
myBox.volume // -> 16

Das Schlüsselwort get kennzeichnet eine get-only-property (kurz: getter). Da dies in der Praxis sehr häufig vorkommt, gibt es dafür eine Kurzschreibweise, bei der das Schlüsselwort get weggelassen werden kann:

var volume: Int {
    return length * width * height
}

Und der Vollständigkeit halber soll nicht unterschlagen werden, dass es neben einem getter auch einen setter gibt. Im folgenden Beispiel kann die Höhe der Box variiert werden:

class Box {

    var length: Int = 4
    var width : Int = 2
    var height: Int = 2
    var volume: Int {
    get {
        return length * width * height
    }
    set (newHeight) {
        height = height * newHeight
    }
}

var myBox = Box()
myBox.volume = 2
print(myBox.volume) // -> 32

Durch Benutzung dieser Website erklären Sie sich mit der Verwendung von Cookies einverstanden. Mehr Informationen

Die Verwendung von Cookies dient dazu, Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf diese Website zu analysieren. Außerdem werden Informationen zur Nutzung dieser Webseite an Partner für soziale Medien, Werbung und Analysen weitergegeben.

Schließen