13-1. 初期化コンセプト、デフォルト初期化(初期化)
9748 ワード
初期化は、インスタンスを使用するクラス、構造体、または列挙タイプを準備することを意味します.この手順には、インスタンスに格納されているプロセスの初期値を設定し、新しいインスタンスが使用される準備ができている前に他の設定または初期化を実行することが含まれます.
初期化文は、特定のタイプの新しいインスタンスを生成するために呼び出される. 新しい構造体定義の間で使用される初期化文の例は、次のとおりです.これは教室でも同様に適用されます. のデフォルトのproperty値を直接設定して初期化を省略できます. 初期化構文では、パラメータによってインスタンスを作成するときに、ユーザが望む値によって作成することができる. 初期化パラメータを渡すときの関数と同様に、パラメータラベルを付与することで適用できます.同様に,パラメータラベルの省略も可能である. ユーザー・タイプの値は、初期化中に設定できないか、後続の値がない可能性があるため、外部タイプとして宣言されることがあります.この場合、nilに初期化され、初期化時に値がないことを示します.傍観者タイプのPropertyは、他の初期値を指定しない限りnilに自動的に初期化できます. の初期化が完了する前に有限値に設定すれば、初期化中にproperty定数にいつでも値を割り当てることができます.クラスインスタンスの場合、初期化中にproperty定数を変更するのは、このpropertyを導入したクラスのみで実行され、サブクラスでは実行されません.
初期化構文
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)
//다음과 같이 인자 라벨을 사용하여 초기화가 가능하다.
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"
Reference
この問題について(13-1. 初期化コンセプト、デフォルト初期化(初期化)), 我々は、より多くの情報をここで見つけました https://velog.io/@devleeky16498/13-1.-초기화-개념-기본-초기화initializationテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol