-
swift - Property #5 (self, &, super)swift 2021. 1. 12. 11:35
// self : 인스턴스 멤버 내부에서 접근하면 해당 인스턴스에 접근, 타입 멤버 내부에서 접근하면 형식 자체에 접근 // self.propertyName : 인스턴스 속성에 접근할때 // self.method() : 인스턴스 메소드를 호출할때 대부분 self와 .을 생략 // self[index] : 서브스크립트에 접근할때 사용 // self.init(parameters) : 동일한 형식에 있는 다른 생성자를 호출할 때 사용 self 생략 불가능 class Size { var width = 0.0 var height = 0.0 func calcArea() -> Double { // self. 생략가능 return self.width * self.height } var area: Double { // self. 생략가능 return self.calcArea() } func update(width: Double, height: Double) { // 멤버변수와 파라미터 이름이 일치하기 때문에 self. 생략불가 self.width = width self.height = height } func doSomething() { // 클로저에서 인스턴스 내부 변수에 접근하려면 캡처를 해야하는데 이경우 self 생략불가능 let c = { self.width * self.height } } static let unit = "" static func doSomething() { // 형식 자체를 나타냄 // 형식 메소드에서 인스턴스 멤버에 접근 불가능 // self.width // self 생략가능 self.unit } } struct Size2 { var width = 0.0 var height = 0.0 // 인스턴스가 새로운 인스턴스로 교체 // 이패턴은 생성자를 통해 초기화 할 수 있다는 장점이 있지만 class에서는 사용 불가능 mutating func reset(value: Double) { // width = value // height = value self = Size2(width: value, height: value) } }
// self대신 super를 사용한다는 차이점을 빼면 별 다를게 없음
// 상속과 관련이 있기 때문에 class에서만 사용한다. struct에서는 사용하지 않음
'swift' 카테고리의 다른 글
swift - Method and Subscript #2 (Type Method) (0) 2021.01.12 swift - Method and Subscript #1 (Instance Method) (0) 2021.01.12 swift - Property #4(Type Property, Type Computed Property) (0) 2021.01.12 swift - Propery #3 (Property Observer) (0) 2021.01.12 swift - Property #2 (Computed ProPerty, Read-Only Computed Property) (0) 2021.01.12