struct2 Structure의 immutability value 타입인 struct의 인스턴스는 let로 선언되는 경우, 내부의 변수가 var로 선언되어 있다 할지라도 해당 변수의 값을 변경할 수 없습니다. struct MyStruct { var id: Int } let structA = MyStruct(id: 0) structA.id = 1 // Error: Cannot assign to property: 'structA' is a 'let' constant struct 인스턴스 자체를 var로 선언해야만 내부 값을 변경할 수 있습니다. 왜 그럴까? 이는 struct가 value 타입인 것과 연관이 있습니다. value 타입인 struct는 내부의 변수 값이 변경될 때, 기존의 인스턴스의 값이 변하는 것이 아니라 마치 새로운 인스턴스가 생성되는 것 처럼 .. 2024. 4. 21. Struct에서 mutating function을 사용하는 이유 struct를 사용하다보면, 내부에 정의된 프로퍼티 값을 변경하는 function을 정의하는 것은 기본적으로 제한되어 있습니다. 프로퍼티가 var여도 마찬가지 입니다. struct MyStruct { var name: String { willSet { print(newValue) } } func changeName(_ newName: String) { self.name = newName //error: cannot assign to property: 'self' is immutable } } 이는 struct의 기본적인 특징을 알면 왜 그런지 이해하기 쉽습니다. struct는 class와 다르게 struct가 constant로 정의된 경우에 내부 프로퍼티가 var일지라도 변경이 불가능한 특징이 있습니다... 2024. 2. 8. 이전 1 다음 반응형