목록문법 (13)
大器晩成
지연 저장프로퍼티(Lazy Stored Property)일반적으로 저장 프로퍼티는 클래스 인스턴스가 처음 생성될 때 함께 초기화되지만, 저장프로퍼티 정의 앞에 lazy키워드가 붙으면 예외입니다.lazy키워드가 붙은 프로퍼티는 선언만 될 뿐 초기화되지 않고 계속 대기하고 있다가 프로퍼티가 호출되는 순간에 초기화됩니다. 만약 이 프로퍼티에 클래스나 구조체 인스턴스가 대입된다면, 프로퍼티가 호출되기 전까지는 해당 인스턴스는 초기화되지 않습니다.호출되기 전에는 선언만 된 상태로 대기하다가 실제로 호출되는 시점에서 초기화가 이루어지는 저장 프로퍼티를 지연 저장 프로퍼티라고 합니다.struct Dog { var name: String lazy var weight: Double = 10.0 //선언 및 초..
프로퍼티는 저장 여부를 기준으로 저장프로퍼티와 연산 프로퍼티로 나눌 수 있다. 저장프로퍼티입력된 값을 저장하거나 저장된 값을 제공하는 역할을 합니다.상수 및 변수를 사용해서 정의 가능합니다.클래스와 구조체에서는 사용이 가능하지만, 열거형에서는 사용할 수 없습니다.// 클래스에서 저장 프로퍼티//초기화 구문을 작성하고, 그 안에서 초기값 할당//class Uesr { //에러 발생 코드// var name: String // 클래스의 경우 생성자가 없을 경우 선언과 동시에 초기화가 필요//}//#방법1 초기화 구문을 작성하고, 그 안에서 초기값을 할당class User { var name: String init(){ self.name = "" }}//#방법2 프..
명시적 초기화란프로퍼티를 선언하면서 동시에 초기값을 지정하는 경우입니다.초기화 메서드 내에서 프로퍼티의 초기값을 지정하는 경우입니다.구조체의 프로퍼티와 초기화 구문struct Person { var name: String var age: Int}//var person = Person() // 모든 속성이 초기화 되지 않았기 때문에 에러 발생var person = Person(name: "카리나", age: 25) // 멤버와이즈초기 구문멤버와이즈 초기화 구문은 인스턴스를 생성하는 형식을 정의할 뿐만 아니라, 입력된 인자값을 이용하여 프로퍼티를 초기화하는 과정까지 처리합니다.기본 초기화 구문 클래스/구조체이름(), 이 형식의 초기화 구문을 사용하려면, 객체의 모든 프로퍼티는 선언과 동시에 초기값..
오버로드(Overload): 과적하다. 같은 이름의 함수에 매개변수(파라미터)를 다르게 선언하여, 하나의 함수 이름에 실제 여러 개의 함수를 대응시키는 것입니다.-> 함수 이름의 재사용 *스위프트는 오버로딩을 지원하는 언어이며, 함수이름, 파라미터 수/자료형, 아규먼트 레이블, 리턴형을 모두 포함해서 함수를 식별합니다. 오버로딩 예시func sumTest(num1: Int, num2: Int) -> Int{ var result = num1 * num2 return result}func sumTest(_ num1: Int,_ num2: Int) -> Int{ var result = num1 - num2 return result}print(sumTest(num1: 1, num2: 2..