struct에선 왜 굳이 mutating을 사용해야 값을 변경할 수 있는지 궁금해서 공부해보았다.
struct 내부의 메서드를 mutable하게 바꿔주는 키워드
스위프트에서 struct는 값 타입(immutable)이다.
값 타입의 속성은 기본적으로 인스턴스 메서드 내에서 수정할 수 없고 수정하려면 인스턴스 메서드에서 mutating키워드를 사용해야만 한다.
struct User {
var firstName: String
var lastName: String
func getName() {
firstName = "살라" // error: Cannot assign to property: 'self' is immutable
lastName = "모하메드" // error: Cannot assign to property: 'self' is immutable
}
}
struct User {
var firstName: String
var lastName: String
mutating func getName() {
firstName = "살라"
lastName = "모하메드"
}
}
mutating을 공부하다보니 결국 값타입과 참조타입의 차이, 구조체와 클래스의 차이를 아는게 더 중요한거 같아서 그 부분도 업로드 해보려고 한다!