목록속성 (3)
大器晩成
프로토콜 속성의 요구사항프로토콜에 선언되는 프로퍼티에는 초기값을 할당할 수 없다.var로만 가능합니다. (let으로 선언 불가능)-> 개인적인 생각 ) 프로토콜은 선언만 할 뿐 값을 지정할 수 없기 때문에, let키워드를 사용하지 못하는 거 같다. let 초기값을 지정해야 하지만, var는 지정하지 않아도 되기 때문에, 프로토콜의 성격을 봤을 때 var 키워드만 사용하는 것이 많은 거 같다.또, 프로토콜에서는 함수를 정의할 때, private 키워드를 사용할 수 없고, 채택한 클래스나, 구조체에서 함수를 사용할 때에도 private 키워드를 사용할 수 없다. 이 또한 프로토콜의 성격과 맞지 않기 때문에 사용이 불가능한 거 같다. 프로토콜은 어느 곳에든지 채택만 하면 사용을 할 수 있어야 하는데, priv..
계산/연산 속성(프로퍼티)연산 프로퍼티(Computed property)는 필요한 값을 제공한다는 점에서 저장 프로퍼티와 같지만, 실제 값을 저장했다가 반환하지는 않고 대신 다른 프로퍼티의 값을 연산 처리하여 간접적으로 값을 제공합니다.프로퍼티의 값을 참조하기 위해 내부적으로 사용하는 구문이 get 구문입니다. 함수와 비슷해서 내부적으로 return 키워드를 사용하여 값을 반환하는데, 여기서 반환되는 값이 프로퍼티가 제공하는 값이 됩니다.변수만 사용해서 정의 가능합니다. (값이 변경되는 속성이기 때문에, let은 불가능합니다.연산 프로퍼티는 선택적으로 set 구문을 추가할 수도 있습니다. 선택적이라는 조건이 붙은 만큼 set 구문은 필요에 따라 연산 프로퍼티에서 생략할 수 있습니다. set 구문이 생략되..
지연 저장프로퍼티(Lazy Stored Property)일반적으로 저장 프로퍼티는 클래스 인스턴스가 처음 생성될 때 함께 초기화되지만, 저장프로퍼티 정의 앞에 lazy키워드가 붙으면 예외입니다.lazy키워드가 붙은 프로퍼티는 선언만 될 뿐 초기화되지 않고 계속 대기하고 있다가 프로퍼티가 호출되는 순간에 초기화됩니다. 만약 이 프로퍼티에 클래스나 구조체 인스턴스가 대입된다면, 프로퍼티가 호출되기 전까지는 해당 인스턴스는 초기화되지 않습니다.호출되기 전에는 선언만 된 상태로 대기하다가 실제로 호출되는 시점에서 초기화가 이루어지는 저장 프로퍼티를 지연 저장 프로퍼티라고 합니다.struct Dog { var name: String lazy var weight: Double = 10.0 //선언 및 초..