struct는 원래 자동으로 Memberwise Initializers를 제공해준다
하지만..
struct에서 하나의 프로퍼티라도 private이라면 Memberwise Initializers 또한 private!
내부에선 원래대로 자동으로 제공이 되는 것을 확인할 수 있다
하지만! 외부에서 사용하려면 따로 init을 작성해주어야 한다
struct Person {
var name: String
var age: Int?
private var hobby: String = "Swimming"
init(name: String) {
self.name = name
}
}
let milou = Person(name: "Milou")
추가로 직접 init도 하고 싶고, Memberwise Initializers도 사용하고 싶다면
extension으로 빼면 된다
struct Person {
var name: String
var age: Int
var hobby: String
}
extension Person {
init(name: String, age: Int) {
self.name = name
self.age = age
self.hobby = "Swimming"
}
}
'Swift' 카테고리의 다른 글
[Swift] 고차함수 더 이상 헷갈리지 않기 (0) | 2025.06.04 |
---|---|
[WWDC] ARC in Swift (0) | 2025.05.30 |
[Swift]switch문 대신 if, guard 사용하기 (0) | 2025.05.28 |
Struct와 Class 차이(부제: 내가 SwiftUI가 어려웠던 이유) (1) | 2025.05.27 |
[Swift] COW 동작 원리 (0) | 2025.05.26 |