Swift

Swift) self vs Self

행복하고 싶은 사람 2022. 8. 11. 15:33

self

애플 공식문서에는 self를 이렇게 정의합니다.

self는 모든 인스턴스들이 암시적으로 생성하는 프로퍼티라고합니다.

self는 instance에서 자기 자신을 나타내는 property!

self는 runtime, compiletime때 class나 struct의 instance를 칭함.

EX)

clas Point{
	var x: Int
	var y: Int

	init(x: Int, y:Int)
	{
			self.x = x
			self.y = y

	}
}

Self

Self type은 특정한 type이 아니고 타입의 이름을 반복해서 쓰는 대신에 현재 타입을 편하게 가리킬 수 있도록 해줌

즉 class, sturuct, enum에서 Self를 사용하면 그 타입을 지칭함.

class SumperClass{
	func f() ->Self{
		return self
	}
}
class SubClass:SuperClass{}

let x = SuperClass()
x.f()

let y = SubClass()
y.f()

Self는 type property를 가리킬때 사용됨.

extension Int {
    static let zero: Self = 0
    func makeZero() -> Self {
        return Self()
    }
}

이 코드의 경우에는 Self는 Int를 나타내고 있는것임

self와 Self를 비교하자면

Self는 type의 property와 method를 지칭할수있음

self는 instance의 property와 method를 지칭할 수 있음