13-1. 초기화 개념, 기본 초기화(initialization)
초기화는 인스턴스의 클래스, 구조체 또는 열거형을 사용하기 위해 준비하는 단계를 의미한다. 이 단계에서는 인스턴스에 저장된 프로퍼티에 초기값을 설정해주고, 새로운 인스턴스가 사용할 준비가 되기 전 다른 설정이나 초기화를 수행하는 것을 포함한다.
초기화 구문
- 초기화 구문은 특정 타입의 새로운 인스턴스를 생성하기 위해 호출된다.
init() {
//초기화 구문 작성
}
- 새로운 구조체의 정의간 사용하는 초기화 구문의 예시는 다음과 같다. 이는 클래스에서도 똑같이 적용 가능하다.
struct Farenheit {
var temperature : Double
init() {
temperature = 32.0
//값이 정의되지 않은 프로퍼티의 초기값을 설정해준다.
}
}
var f = Farenheight()
//다음과 같이 구조체를 정의하면 초기값으로서 32를 가지는 프로퍼티와 함께 인스턴스가 생성된다.
- 기본적인 프로퍼티값을 바로 설정하여 초기화를 생략할 수 있다.
struct Farenheit {
var temperature = 32.0
`
//다음과 같이 초기화를 해줄 시 별도 초기화 구문 생력이 가능하다.
초기화 구문 사용자화
- 초기화 구문에서 파라미터를 통해 인스턴스 생성 시 사용자가 원하는 값을 통해 생성이 가능하다.
struct Celsius {
var temperature : Double
init(temp : Int) {
temperature = temp
}
init(kelvin: Int) {
temperature = kelvin - 273.15
}
let cel = Celsius(temp : 21)
let cel1 = Celsius(kelvin : 290)
// 다음과 같이 초기화 파라미터를 통해서 프로퍼티의 초기화가 가능하다.
//초기화 시 원하는 초기화를 선택해서 적용이 가능하다.
- 초기화 파라미터 전달시 함수와 비슷하게, 인자 라벨을 부여하여 적용이 가능하다. 마찬가지로 인자 라벨의 생략 역시 가능하다.
struct Carrier {
var carrier : Int
init(from number : Int) {
carrier = number
}
init(_ name : Int) {
carrier = name
}
let carrier = Carrier(from : 100)
let carrier = Carrier(100)
//다음과 같이 인자 라벨을 사용하여 초기화가 가능하다.
- 사용자 타입 값이 초기화 동안 설정이 불가능하거나, 추후 값 없음을 가질 수 있기 때문에 이를 옵셔널 타입 프로퍼티로 선언하는 경우가 있다. 이럴 경우에는 초기화 시 아직 값 없음을 나타내기 위해서 nil로 초기화한다. 옵셔널 타입의 프로퍼티는 별도의 초기값을 명시하지 않으면 nil로 자동 초기화가 가능하다.
class SurveyQuestion {
var text : String
var response : String?
init(text : String) {
self.text = text
}
func ask() {
print(text)
}
}
let cheeseQuestion = SurveyQuestion(text : "Do you like cheese?")
//다음과 같이 초기화 가능하며, 비어있는 것이 가능하므로 초기에 nil부여가 가능하다.
- 초기화가 완료될 때까지 한정된 값으로 설정되는 한 초기화 중 언제든지 프로퍼티 상수에 값 할당이 가능하다. 클래스 인스턴스 경우 초기화 동안 프로퍼티 상수를 수정하는 것은 해당 프로퍼티를 도입한 클래스에 의해서만 가능하고, 하위 클래스에서는 안된다.
class SurveyQuestion {
let text : String
var response : String?
init(text : String) {
self.text = text
}
func ask() {
print(text)
}
}
let beetsQuestion = SurveyQuestiont(text : "How about beets?")
beetsQuestion.ask()
//비츠는 어때? 를 출력한다
beetsQuestion.response = "I also like beets"
Author And Source
이 문제에 관하여(13-1. 초기화 개념, 기본 초기화(initialization)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@devleeky16498/13-1.-초기화-개념-기본-초기화initialization
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
init() {
//초기화 구문 작성
}
struct Farenheit {
var temperature : Double
init() {
temperature = 32.0
//값이 정의되지 않은 프로퍼티의 초기값을 설정해준다.
}
}
var f = Farenheight()
//다음과 같이 구조체를 정의하면 초기값으로서 32를 가지는 프로퍼티와 함께 인스턴스가 생성된다.
struct Farenheit {
var temperature = 32.0
`
//다음과 같이 초기화를 해줄 시 별도 초기화 구문 생력이 가능하다.
- 초기화 구문에서 파라미터를 통해 인스턴스 생성 시 사용자가 원하는 값을 통해 생성이 가능하다.
struct Celsius {
var temperature : Double
init(temp : Int) {
temperature = temp
}
init(kelvin: Int) {
temperature = kelvin - 273.15
}
let cel = Celsius(temp : 21)
let cel1 = Celsius(kelvin : 290)
// 다음과 같이 초기화 파라미터를 통해서 프로퍼티의 초기화가 가능하다.
//초기화 시 원하는 초기화를 선택해서 적용이 가능하다.
- 초기화 파라미터 전달시 함수와 비슷하게, 인자 라벨을 부여하여 적용이 가능하다. 마찬가지로 인자 라벨의 생략 역시 가능하다.
struct Carrier {
var carrier : Int
init(from number : Int) {
carrier = number
}
init(_ name : Int) {
carrier = name
}
let carrier = Carrier(from : 100)
let carrier = Carrier(100)
//다음과 같이 인자 라벨을 사용하여 초기화가 가능하다.
- 사용자 타입 값이 초기화 동안 설정이 불가능하거나, 추후 값 없음을 가질 수 있기 때문에 이를 옵셔널 타입 프로퍼티로 선언하는 경우가 있다. 이럴 경우에는 초기화 시 아직 값 없음을 나타내기 위해서 nil로 초기화한다. 옵셔널 타입의 프로퍼티는 별도의 초기값을 명시하지 않으면 nil로 자동 초기화가 가능하다.
class SurveyQuestion {
var text : String
var response : String?
init(text : String) {
self.text = text
}
func ask() {
print(text)
}
}
let cheeseQuestion = SurveyQuestion(text : "Do you like cheese?")
//다음과 같이 초기화 가능하며, 비어있는 것이 가능하므로 초기에 nil부여가 가능하다.
- 초기화가 완료될 때까지 한정된 값으로 설정되는 한 초기화 중 언제든지 프로퍼티 상수에 값 할당이 가능하다. 클래스 인스턴스 경우 초기화 동안 프로퍼티 상수를 수정하는 것은 해당 프로퍼티를 도입한 클래스에 의해서만 가능하고, 하위 클래스에서는 안된다.
class SurveyQuestion {
let text : String
var response : String?
init(text : String) {
self.text = text
}
func ask() {
print(text)
}
}
let beetsQuestion = SurveyQuestiont(text : "How about beets?")
beetsQuestion.ask()
//비츠는 어때? 를 출력한다
beetsQuestion.response = "I also like beets"
Author And Source
이 문제에 관하여(13-1. 초기화 개념, 기본 초기화(initialization)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@devleeky16498/13-1.-초기화-개념-기본-초기화initialization저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)