2016-12-04 2 views
0

Ich kann Eigenschaftswert der Klasseninstanz mit Dot-Notation aktualisieren, aber es funktioniert nicht für die Struktur.Struktur Instanzeigenschaft Wert

Hier ist Beispiel:

struct Resolution { 
    var width = 0 

} 

class VideoMode { 
    var interlaced = false 
} 


let someResolution = Resolution() 
let someVideoMode = VideoMode() 

Für Klasse:

someVideoMode.interlaced // false 
someVideoMode.interlaced = true //true 
someVideoMode.interlaced // now true 

Für Struct:

someResolution.width // 0 
someResolution.width = 200 // throws an error says : someResolution is constant 

Frage ist:

someResolution und someVideoMode sind beide Konstanten. kann ich den Eigenschaftswert von Klasseninstanz ohne nicht sagen someVideoMode Fehler ändern ist constant.However ich nicht den Eigenschaftswert von struct.It ändern kann, wirft ein Fehler sagt someResolution konstant ist

Warum?

Vielen Dank!

+0

check 'valueOfStructInstance' Definition ist nicht" lassen ", weil dieser Code ohne Fehler kompiliert –

Antwort

0

struct s sind Werttypen, während class es Referenzen sind.

Während Sie können Satz Eigenschaften einer konstanten Referenztyp, Sie kann nicht Änderung der Referenz selbst.

let someVideoMode = VideoMode() 
someVideoMode = VideoMode() 

würde einen Fehler verursachen.

Sie können eine detaillierte Beschreibung in the documentation you actually got this sample from finden.

+0

Ändern lassen zu var das Problem beheben, aber in der Klasseninstanz, warum wirft es keinen Fehler? es ist auch dort vermietet. –

+0

aktualisiert Antwort. – shallowThought

+0

Vielen Dank! –

Verwandte Themen