구조체의 메서드에서 프로퍼티의 값을 변경할 때에는 mutating
키워드를 붙여 주어야 한다. 왜 붙여 주어야 할까?
스위프트의 구조체는 불변 객체이기 때문에, 프로퍼티의 값을 실제로 변경할 수가 없음
따라서 mutating
키워드로 메서드를 선언하여 해당 메서드가 종료되면, 메서드 내부에서 변경한 프로퍼티의 값으로 새로운 구조체를 생성한 후 원래의 구조체에 대입
4 + 1이라는 수식을 계산할 때, 4가 5가 되지 않고 5 = 4 + 1이 되는 것과 같음
Stack Overflow - What does the Swift 'mutating' keyword mean?