HIT해

[Swift 기초문법 - 18] Struct mutating 본문

Swift/Swift 기초문법

[Swift 기초문법 - 18] Struct mutating

힛해 2024. 7. 12. 01:58
728x90

Swift에서 Struct와 Class의 차이를 이전 포스팅에서 알아보았다.

Class의 경우 메모리 주소값을 가리키기 때문애 복사한 개체 혹은 클래스 내부 함수를 통해 변수값의 변경이 쉽게 가능하지만

Struct는 그렇지 않다.

그래서 Struct내부에 정의된 함수가 멤버변수를 바꾸려고 하면 오류가 발생한다

아래의 코드를 한번 보자!

import UIKit

struct myFriend {
    var name : String
    var age : Int
    
    func changeAge(newAge : Int){
        self.age = newAge
    }
}

var JH = myFriend(name: "지혁", age: 25)

JH.changeAge(newAge: 26)

 

실행결과

 

에러가 발생하는 것을 볼 수 있다.

 

이때 함수앞에 mutating을 붙이면 멤버변수를 바꿀 수 있다.

import UIKit

struct myFriend {
    var name : String
    var age : Int
    
    mutating func changeAge(newAge : Int){
        self.age = newAge
    }
}

var JH = myFriend(name: "지혁", age: 25)

JH.changeAge(newAge: 26)