스위프트에서 구조체와 열거형은 값 타입이다. 값 타입인 구조체에서는 인스턴스 메소드 내에서 프로퍼티들을 수정할 수 없다. 따라서 이러한 프로퍼티들을 구조체 안의 메소드에서 수정하려면 mutating
이라는 키워드를 사용해야한다.
struct Person {
let name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func changeAge() {
age = 10 // Error
}
}
struct Person {
let name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
mutating func changeAge() {
age = 10 // mutating 키워드 사용
}
}
var p = Person(name: "hansol", age: 19)
print(p.age) // 출력값: 19
p.changeAge()
print(p.age) // 출력값: 10