10-3. 전역과 지역변수(Global and Local Variables)

🌈 devleeky16498·2022년 4월 15일
0

전역과 지역변수

프로퍼티를 계산하고 관찰하기 위해 이전에 설명한 기능들은 전역변수와 지역변수에서도 사용 가능하다. 전역변수는 함수, 메서드, 클로저, 또는 타입 컨텍스트의 외부에 정의된 변수이다. 지역변수는 함수, 메서드 등의 내부에 정의된 변수이다. 저장된 프로퍼티처럼 저장된 변수는 타입의 값을 위한 저장소를 제공하고 값을 설정 및 조회함을 허락한다. 전역상수와 변수는 지연 저장된 프로퍼티와 유사하게 항상 느리게 계산되므로 lazy가 필요없다. 하지만 지역상수와 변수는 절대 느리게 계산되지 않는다.

func someFunction() {
	@SmallNumber var myNumber : Int = 0
    
    myNumber = 10
    //10의 값을 가진다.
    myNumber = 24
    //이제 12의 값을 가진다. 프로퍼티 래퍼가 24보다 큰 숫자를 허용하지 않기 떄문이다.

타입 프로퍼티(Type Property)

인스턴스 프로퍼티는 특정 타입의 인스턴스에 속하는 프로퍼티이다. 타입의 새로운 인스턴스를 만들때마다 다른 인스턴스와는 별도로 고유한 프로퍼티 값을 설정한다. 또한 해당 타입으 ㅣ인스턴스가 아닌 타입 자체에 속하는 프로퍼티 정의가 가능하다. 이를 타입 프로퍼티라고 한다인스턴스 프로퍼티는 특정 타입의 인스턴스에 속하는 프로퍼티이다. 타입의 새로운 인스턴스를 만들때마다 다른 인스턴스와는 별도로 고유한 프로퍼티 값을 설정한다. 또한 해당 타입의 인스턴스가 아닌 타입 자체에 속하는 프로퍼티 정의가 가능하다. 이를 타입 프로퍼티라고 한다`.
타입 프로퍼티는 static 키워드로 선언하며 모든 인스턴스에 보편적인 값을 정의하는데 유용하다. 클래스 타입의 계산된 프로퍼티는 class 키워드를 통해서 상위 클래스의 구현을 재정의 가능하다.

struct someStructure {
	static var storedTypeProperty = "Some value"
    static var computedTypeProperty : Int {
    	return 1
    }
}

enum someEnum {
	static var storedTypeProperty = "Some value"
    static var computedTypeProperty : Int {
    	return 6
    }
}

class someClass {
	static var storedTypeProperty = "Some value"
    static var computedTypeProperty : Int {
    	return 27
    }
    class var overrideableComputedProperty : Int {
    	return 107
    }
}

타입 프로퍼티는 인스턴스의 프로퍼티처럼 점 구문으로 조회되고 설정 가능하다. 소괄호를 명시하지 않는 것이 특징이다.

print(SomeStructure.storedTypeProperty)
//some Value를 출력한다.
someStructure.storedTypeProperty = "Another value"
//이제 Another value 값을 가진다.
print(someStructure.storedTypeProperty)
//어나더 밸류를 출력한다.

print(someEnum.storedTypeProperty)
//some Value를 출력한다.
profile
Welcome to Growing iOS developer's Blog! Enjoy!🔥

0개의 댓글