intro) 초기화

인스턴스의 클래스, 구조체, 또는 열거형을 사용하기 위해 준비하는 단계입니다. 이 단계에는 인스턴스에 각 저장된 프로퍼티에 초기값을 설정하고 새로운 인스턴스가 사용할 준비가 되기 전에 다른 설정이나 초기화를 수행하는 것

⇒ 모든 프로퍼티를 기본 값으로 초기화

인스턴스 내 기본값이 존재하지 않는 프로퍼티가 있을 경우, 초기화에 실패하고 인스턴스는 생성되지 않는다.

1. 구조체의 초기화

1-1. 선언과 동시에 프로퍼티에 기본값 넣어주기

프로퍼티의 선언과 동시에 값을 할당하면 그 값을 초기 값으로 사용할 수 있다.

+) 항상 초기값을 가지면 프로퍼티 선언과 동시에 초기 값을 할당하는게 좋다.

최종 결과는 동일하지만 기본 값은 프로퍼티의 초기화를 해당 선언 시점과 더 밀접하게 연결함으로써 더 짧고 명확한 이니셜라이저를 만들 수 있고, 프로퍼티의 타입을 추론할 수 있기에 코드가 짧아진다.

struct SoptMember{
		let name: String = "류희재"
		let part: String = "iOS"
}

1-2. 프로퍼티의 타입을 옵셔널(Optional) 타입으로 설정하기

만약 값이 있을지도 없을지도 모를 경우에는 옵셔널 타입으로 설정하면 된다.

초기화를 할때 옵셔널 타입의 프로퍼티는 자동으로 nil로 초기화

struct SoptMember{
		let name: String?
		let part: String?
}

1-3. init 함수에서 값을 설정해주기

초기화를 진행 하는 함수를 바로 init 함수(= 생성자)생성자 안에서 해당 프로퍼티들을 초기화 시킬 수 있다

이때, 초기화는 모든 프로퍼티를 초기화 해줘야 한다!

struct SoptMember{
		let name: String
		let part: String

		init(name: String, part: String) {
				self.name = name
				self.part = part
		}
}

2. Memberwise Initializers

엥? 저는 지금까지 구조체를 초기화한 적이 없었던 거 같은데염..