안녕하세요
오늘은 init에 대해서 다루고자 합니다
앞에서 간단하게 사용방법을 배웠었죠?
오늘은 좀 더 깊이 배워보고자 합니다
기본적으로 생성자와 초기화는 코드로 보는게 더 편할겁니다
초기화(initialization)는
인스턴스가 사용될 수 있도록 준비하는 과정입니다
초기화는 인스턴스를 생성할 때 실행되고 생성자를 통해 수행이 됩니다
생성자(Initializer)는
보통 init 키워드로 정의가되고
인스턴스가 생성될 때 자동으로 호출이됩니다
모든 속성이 기본값을 가지고 있다면 직접 생성자를 정의하지 않아도 됩니다
그러나 초기화가 필요한 경우 생성자를 직접 정의해야합니다
init()도 오버로딩이 가능합니다
위 코드에서는 생성자는 property 속성을 초기하는데 사용이 됩니다
생성자는 객체를 초기화하고 속성을 설정하는데 사용이되고
초기화를 위해서 생성자를 사용하여 이러한 프로세스를 처리하고 있습니다
우선 클래스 초기화와 생성자에 대해서 알아보고자합니다
생성자도 다양하게 설정이 가능하며
일반적으로 Rainbow()호출하면
init()이 자동적으로 호출하게 됩니다
다양한 생성자를 생산할 수 있는 자체가 신기하지 않나요?
구조체에 대해서 알아봅시다
구조체는 생성자를 자동적으로 생성하고 있답니다
신기하죠??
구조체의 경우 컴파일러가 자동으로 제공하는 이니셜라이저가 없으므로 사용자가 직접 이니셜라이절르 구현해야합니다
하지만 값을 초기화 하지 않는 부분만 자동으로 멤버와이즈 이니셜라이저를 제공하게됩니다
만약 모든 속성에 기본값을 지정했다면??
이렇게 이미지에서 알 수 있듯이
없는 부분에서만 멤버와이즈이니셜라이저 자동완성 메서드를 제공하게 됩니다
멤버와이즈 이니셜 라이저란??
구조체가 모든 저장속성에 대해 기본값을 가지고 있고
사용자가 직접 이니셜라이저를 작성하지 않은 경우 자동으로 생성해주는 경우입니다
이렇게 자동적으로 생성해주고 있는걸 확인할 수 있답니다 :)
편리한 기능이므로 잘 사용해야합니다
이렇게 단순하게 초기화와 생성자에 대해서 알아보았는데요
다음 게시글은 생성자에 대해서 더 자세히 알아보고자 합니다
❤️혹시 잘못된 정보가 있다면 꼭 댓글로 알려주시면 감사하겠습니다❤️
✏️참고
앨런스위프트 문법 자료(강의)
꼼꼼한 재은씨의 스위프트 프로그래밍