스위프트에서 클래스와 구조체는 많은 공통점이 있다. 클래스와 구조체 둘 다 다음과 같은 기능이 가능하다. 값을 저장하기 위한 프로퍼티 정의 기능을 제공하기 위한 메소드 정의 subscript 문법을 이용해 특정 값을 접근할 수 있는 subsscript 정의 초기 상태를 설정할 수 있는 initializer 정의 기본 구현에서 기능 확장 특정한 종류의 표준 기능을 제공하기 위한 프로토콜 순응(conform) 구조체로는 가능하지 않고 클래스만 가능한 기능은 아래와 같다. 상속 (Inheritance) : 클래스의 여러 속성을 다른 클래스에 물려 줌 타입 캐스팅 (Type casting) : 런타임에 클래스 인스턴스의 타입을 확인 소멸자 (Deinitializers) : 할당된 자원을 해제(free up) 시..
열거형 (Enumerations) 관련된 값으로 이루어진 그룹을 공통의 형으로 선언하는 것. 열거형 문법 (Enumeration Syntax) enum 키워드를 사용해 열거형을 정의한다. 스위프트의 다른 형과 마찬가지로 형의 이름은 대문자로 시작해야 한다. enum SomeEnumeration { // enumeration definition goes here } enum Food { case krFood case jpFood case cnFood } ✔️ 위의 예제와 같이 스위프트에서 열거형은 생성될 때 각 case 별로 기본 값을 할당하지 않는다. enum Food { case krFood, jpFood, cnFood } ✔️ 위의 예제와 같이 여러 case를 콤마(,)로 구분해서 한줄에 적을 수 있..
클로저 (Closures) 클로저 : 어떤 상수나 변수의 참조를 캡쳐해 저장할 수 있다. ➡️ 익명의 함수 전역 함수 이름이 있고 어떤 값도 캡쳐하지 않는 클로저 중첩 함수 이름이 있고 관련한 함수로 부터 값을 캡쳐 할 수 있는 클로저 클로저 표현 경량화 된 문법으로 쓰여지고 관련된 문맥으로부터 값을 캡쳐할 수 있는 이름이 없는 클로저 ⚠️ 클로저라고 하면 보통 익명의 함수를 의미하는데, 사실 func 키워드를 통해 이름을 붙여주는 함수들도 모두 클로저임. func nameFunc() { print("nameFunc") } // 이름이 있는 함수 = Named Closure let unnamedFunc = { print("unnamedFunc") } // 이름이 없는 함수 = Unnamed Closure..
정의와 호출 (Defining and Calling Functions) 함수를 선언할 때는 가장 앞에 func 키워드를 붙히고 (person: String) 파라미터 형 그리고 -> String 형태로 반환형을 정의한다. func 함수명(파라미터명: 파라미터타입) -> 반환타입 { 실행 구문 return 반환값 } func helloFunc(param: String) -> String { let returnValue = "Hello, " + param + "!" return returnValue } ✔️ 위의 예제와 같이 함수에 인자 값을 넣어 호출할 수 있다. func helloFunc(param: String) -> String { //let returnValue = "Hello, " + param ..