Class vs Struct
Which to use?
In swift programming, one of big questions is class and struct.
Pure data -> struct, manipulation -> class Not bad answer.
From Swift Documentation
Swift Documentation answered this question. (Structures and Classes)
Ref vs Value
class ClassA { var a : Int = 0 } struct StructA { var a : Int } func methodClassA(_ a: ClassA) { // ref func plusA() { a.a = a.a + 1 } } func methodStructA(_ a: StructA) { // value func plusB() { // a.a = a.a + 1 Cannot!!! } }
Class is reference, Structure is value (copy)
Inheritance
Structure | Only Protocol |
Class | Protocol, Class, Struct |
class ClassA { var a : Int = 0 } struct StructA { var a : Int } class ClassAX : ClassA, Codable { } class ClassAX2 : StructA { } /* // Cannot struct StructAX : StructA { }*/ // OK struct StructAX : Codable { }
Change variable
Struct cannot change variable in func. If you want, need to add mutating prefix
class ClassB { var changeB : Int init(changeB: Int) { self.changeB = changeB } func updateB(target: Int) { self.changeB = target } } var classB = ClassB(changeB: 5) classB.changeB = 3 print(classB.changeB) struct StructB { var notB : Int mutating func updateB(target: Int) { self.notB = target } } var structB = StructB(notB: 5) structB.notB = 3 print(structB.notB)
コメント