본문 바로가기

학습 노트/Swift (2021)

(26)
109 ~ 117. Property (속성) Stored Property (저장속성) 형식 내부에 변수와 상수를 선언하면 속성이 된다. 이러한 속성을 저장속성(stored property)라고 한다. Syntax Variable Stored Property var name: Type = DefaultValue Contant Stored Property let name: Type = DefaultValue 클래스와 구조체에서 생성할 수 있으며, 저장속성은 인스턴스에 해당한다. 따라서 저장속성이 생길 때마다 새로운 메모리 공간을 요구한다. 문법에서 보듯 일반적인 변수와 상수를 선언하는 방식과 동일하다. 또한, 선언과 함께 초기화하는 경우 형식추론을 통해 형식을 생략하는 것도 가능하다. 다른 요소에 의존적인 값이라면 생성자를 통해 초기화 하는 것도 가능..
104 ~ 108. Structure and Class Structures and Classes (구조체와 클래스) 애플은 많은 형식을 제공하지만 모든 형식을 제공하진 않는다. 따라서 개발자 스스로가 형식을 새로 만들어야 할 필요가 있을 수 있는데, 이때 필요한 것이 구조체와 클래스이다. 열거형까지 포함해 이들을 User defined type 이라고 부르거나 Custom data type이라고 부른다. User Defined Type / Custom Data Type Enumeration Structure Class Programming Paradigm 프로그래밍 언어들은 저마다의 규칙을 가지고 있고, 이를 프로그래밍 패러다임이라고 한다. 현대의 언어들은 여러 패러다임 중 두가지 이상을 구현할 수 있는 mUlti-Paradigm 언어이고, 스위프트도 마찬가..
098 ~ 103. Enumeration (열거형) Enumeration Types (열거형) 연관된 상수들을 하나의 그룹으로 묶은 자료형을 열거형이라고 한다. 이때 열거형에 포함되게 된 상수들은 상수라고 표현하지 않고 Enumeration Case혹은 줄여서 case라고 부른다. 열거형과 열거형에 포함된 케이스는 독립적인 이름을 가진다. 열거형은 코드의 가독성과 안정성을 증가하기 위해 사용한다. 워드 프로세서를 만든다고 가정했을 때 문단 정렬을 위해 다음과 같이 선언한다. 왼쪽 정렬은 0, 가운데 정렬은 1, 오른쪽 정렬은 2이다. let left = 0 let center = 1 let right = 2 var alignment = center1 결과 1 가운데 정렬을 선택했을 때 동작은 정상적으로 가능하지만 결과인 1이 정확히 무엇을 정의하는지 알기..
087 ~ 097. Collections (콜렉션) Collection (컬렉션) Swift는 세 가지의 컬렉션을 제공한다. Array (배열) 데이터를 순서대로 저장한다. Dictionary (딕셔너리) key와 value를 하나의 쌍으로 저장한다. Set (셋/집합) 집합 연산을 수행하는 컬렉션. Foundation Collection과 Swift Collection Swift의 컬렉션 은은 다시 두 가지로 구분되는데, 기존부터 사용되던 Class로 구현된 Foundation Collection과 구조체로 구현된 Swift Collection이다. 일반적으로 말하는 컬렉션은 Swift Collection을 의미한다. 따라서 Swift Collection의 사용 빈도가 많고, 값 형식이 아닌 참조 형식을 사용하고 싶을 때 Foundation Collec..
071 ~ 086. Strings and Character (문자열과 캐릭터) Strings and Character let s = "string" print(type(of: s)) 결과 String let c = "c" print(type(of: c)) 결과 String 자동 지정 방식의 경우 큰 따옴표 사이의 문자 수와는 상관없이 항상 문자열로 판단한다. 따라서 형식지정 방식을 사용해야 character를 저장할 수 있다. let c: Character = "c" print(type(of: c)) 결과 Character 빈 문자열과 빈 문자를 저장하는 방법도 서로 상이하다. let emptyC: Character = " " var emptyS = " " print(emptyS.count) emptyS = "" print(emptyS.count) 결과 1 0 문자는 공백으로 분 ..
067 ~ 070. Tuples (튜플) Tuples Syntax (expr1, expr2, ...) let i = 12, 34 결과 //error int는 스칼렛 타입이기 때문에 여러개의 값을 저장 할 수 없다. int를 제외한 다른 대부분의 타입도 스칼렛 타입이므로 하나의 값을 저장 할 수 있다. let i - (13, 34) print(i) 결과 (12, 34) 괄호를 사용하면 이 때무터 튜플을 사용하며, 두 개 이상의 값을 저장 할 수 있다. 튜플은 컴파운드 타입이다. let data = ("", 200, "OK", 12.34) print(type(of: data)) 결과 (String, Int, String, Double) 튜플 안에 저장 된 멤버에 따라 여러 자료형을 저장 할 수 있다. 튜플 안의 멤버의 수와 자료형은 튜플이 생성됨과..
061 ~ 066. Closure (클로저) Closure Swift에서 closure는 두 가지로 구분 되고, 해당 되는 것은 세 가지 이다. Named Closure Function, Nested Function Unnamed Closure Anonymous Function 함수와 마찬가지로 클로저 또한 First Class Citizen이다. 클로저와 함수는 선언 방식이 동일하며, 그런 만큼 서로 호환 가능하다. Syntax { (parameters) -> ReturnTypein statement } { statements } parameter에서 returntype까지를 closure head 라고 말 한다. in 이후를 closure body라 말 한다. 클로저가 극단적으로 짧아지게 되면 brace와 statement만 남게 되는 경우가 ..
049 ~ 060. Functions (함수) Functions 특정한 기능을 수행하는 코드 조각이다. 코드의 재사용이 가능해 지기 때문에 유지보수에 유리해진다. Calling Functions (함수 호출) Syntax functionName(parameters) print("hello") 결과 hello Defining Functins (함수 정의) Syntax func name(parameters) -> ReturnType { statements } func printHello() { print("hello") } printHello() 결과 hello Return Values (반환) Syntax func name(parameters) -> ReturnType { statements return expression } func add() ->..
043 ~ 048. Optionals Optionals let num: Int print(num) 결과 //error 변수와 상수는 사용하기 전 반드시 초기화해야 한다. 하지만 초깃값을 비워야 하는 경우 해결책으로 0을 비었다고 사용한다. 특정 문자열을 비었다고 사용한다. 을 사용하는 경우 각각 0을 다른 방법으로 사용 할 수 없다. 자료형을 항상 문자열로 고정 할 수는 없다. Syntax TypeName? let optionalNum: Int? = nil print(num) 결과 nil nil은 c나 기타 언어의 null과 같은 역할을 한다. Optional은 '값이 비어있음'을 표현할 수 있는 자료형이다. Unwrapping var num: Int? = nil print(num) num = 123 print(num) 결과 nil Opti..
039 ~ 042. Control Transfer Statements, Labeled Statement (흐름 제어 문) Control Transfer Statements fallthrough, throw, return, break, continue가 해당되며, 이전에 설명했던 fallthrough를 제외한 break, continue를 일단 정리하고, throw와 return은 함수에서 다시 정리한다. Transfer Control 제어 전달은 현재 실행중인 scope에서 코드를 중지하고 다음에 실행할 코드를 실행하는 것을 말한다. break Statement switch문과 반복문 두루 사용 가능하다. 현재 실행중인 문장을 중지하고 다음 문장을 진행한다. switch문에서 사용할 경우 let num = 1 switch num { case 1...10: print("begin") if num % 2 != 0 { //num..