Swift/Swift 기초문법

[Swift 기초문법 - 26] private(set)

힛해 2024. 8. 14. 05:16
728x90

private (set) 이란?

외부에서 값을 변경하는 것을 방지하는 키워드다

 

struct MyPet{

	var title : String = "타이틀없음" // public과 같음, 바깥에서도 접근이 가능.

	private (set) var name :String = "이름없음"
    
    // 클래스일땐 안넣어도 되지만 struct에서 네임이라는 변수를 변경하려면 mutatating을 넣어줘야함
    mutating func setName(to newName:String){
    	self.name = newName
    }
}

var myPet = MyPet()
myPet.name // 이름없음
myPet.title // 타이틀없음

myPet.title = "호롤롤로"
myPet.title // "호롤롤로" 변경이 됨

myPet.name = "자우림" // Cannot assign to property
myPet.name

 

그러나 mutating 함수를 사용하면 변경이 가능해진다

myPet.setName(to: "자우림")
myPet.name // 자우림

// 외부가 아닌 구조체 내부 함수를 통해 바꾸려하기 떄문이다.

 

 

프로젝트 사용예시

Alamofire에서

type이라는 것을 바깥에서 가져올 수는 있지만 변경할 수는 없게 하겠다.

정리하자면

사용하는 변수를 외부에서 접근해서 변경하기를 원하지 않을때 사용하면 좋다.