[Swift] mutating

Yetti·2023년 11월 28일
0

Swift

목록 보기
1/1

struct에선 왜 굳이 mutating을 사용해야 값을 변경할 수 있는지 궁금해서 공부해보았다.

mutating이란?

struct 내부의 메서드를 mutable하게 바꿔주는 키워드

mutating이 필요한 이유

스위프트에서 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 내부에 var로 선언된 변수가 있고 메서드 내부에서 그 변수에 값을 할당하지만 에러가 나는 것을 볼 수 있다.
struct User {
    var firstName: String
    var lastName: String
    
    mutating func getName() {
        firstName = "살라" 
        lastName = "모하메드"
    }
}
  • 이렇게 func 앞에 mutating을 붙여줌으로써 변수에 값을 할당할 수 있게 되었다!

mutating을 공부하다보니 결국 값타입과 참조타입의 차이, 구조체와 클래스의 차이를 아는게 더 중요한거 같아서 그 부분도 업로드 해보려고 한다!

profile
글 잘 쓰는 iOS개발자______가 되고싶다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN