Youngminah/TIL

Memberwise initializer

Youngminah opened this issue · 0 comments

Memberwise initializer

  • 구조체 유형 은 자체 사용자 정의 이니셜라이저를 정의하지 않는 경우 자동제공
  • 기본 이니셜라이저와 달리 구조체는 기본값이 없는 저장된 속성이 있더라도 Memberwise initializer가 작용
struct Size {
    var width = 0.0, height = 0.0
}
let twoByTwo = Size(width: 2.0, height: 2.0)

구조체가 이니셜라이져를 쓸 때는 언제?

  • 꼭 Memberwise 이니셜라이져가 아니더라도 여러가지로 활용해서 구조체의 이니셜라이져를 쓸 수 있음
struct Celsius {
    var temperatureInCelsius: Double
    init(fromFahrenheit fahrenheit: Double) {
        temperatureInCelsius = (fahrenheit - 32.0) / 1.8
    }
    init(fromKelvin kelvin: Double) {
        temperatureInCelsius = kelvin - 273.15
    }
    init(_ celsius: Double) {
        temperatureInCelsius = celsius
    }
}
let bodyTemperature = Celsius(37.0)

Swift 5.5 Document