Swift 9

[SWIFT] 익스텐션 (Extension)

전수열님의 GitBook을 기반으로 정리합니다. 익스텐션 (Extension) Swift에서는 이미 정의된 타입에 새로운 속성이나 메서드를 추가할 수 있습니다. 익스텐션Extension이라는 기능인데요. extension 키워드를 사용해서 정의할 수 있습니다. extension String { var length: Int { return self.characters.count } func reversed() -> String { return self.characters.reversed().map { String($0) }.joined(separator: "") } } let str = "안녕하세요" str.length // 5 str.reversed() // 요세하녕안 응용하기: 거꾸로 된 문자열을 반환..

Swift 2022.11.15

[SWIFT] 프로토콜(Protocol)

전수열님의 GitBook을 기반으로 정리합니다. 프로토콜(Protocol) 프로토콜Protocol은 인터페이스입니다. 최소한으로 가져야 할 속성이나 메서드를 정의합니다. 구현은 하지 않습니다. 진짜로 정의만 합니다. /// 전송가능한 인터페이스를 정의합니다. protocol Sendable { var from: String? { get } var to: String { get } func send() } 클래스와 구조체에 프로토콜을 적용Conform시킬 수 있습니다. 프로토콜을 적용하면, 프로토콜에서 정의한 속성와 메서드를 모두 구현해야 합니다. struct Mail: Sendable { var from: String? var to: String func send() { print("Send a mail..

Swift 2022.11.03

[SWIFT] Enum

전수열님의 GitBook을 기반으로 정리합니다. 열거라는 뜻을 가진 Enumeration에서 따온 용어입니다. 한글로 번역할 때에는 열거형이라는 말을 많이 사용합니다. enum Month: Int { case january = 1 case february case march case april case may case june case july case august case september case october case november case december func simpleDescription() -> String { switch self { case .january: return "1월" case .february: return "2월" case .march: return "3월" case ..

Swift 2022.11.02

[SWIFT] 튜플(Tuple)

전수열님의 GitBook을 기반으로 정리합니다. 튜플 (Tuple) 튜플Tuple은 어떠한 값들의 묶음입니다. 배열과 비슷하지만 배열과는 다르게 길이가 고정되어있습니다. 값에 접근할 때에도 [] 대신 .을 사용해요. var coffeeInfo = ("아메리카노", 5100) coffeeInfo.0 // 아메리카노 coffeeInfo.1 // 5100 coffeeInfo.1 = 5100 이 튜플의 파라미터에 이름을 붙일 수도 있어요. var namedCoffeeInfo = (coffee: "아메리카노", price: 5100) namedCoffeeInfo.coffee // 아메리카노 namedCoffeeInfo.price // 5100 namedCoffeeInfo.price = 5100 튜플의 타입 어노테..

Swift 2022.11.02

[SWIFT] 클래스와 구조체

전수열님의 GitBook을 기반으로 정리합니다. 클래스Class는 class로 정의하고, 구조체Structure는 struct로 정의합니다. class Dog { var name: String? var age: Int? func simpleDescription() -> String { if let name = self.name { return "🐶 \(name)" } else { return "🐶 No name" } } } struct Coffee { var name: String? var size: String? func simpleDescription() -> String { if let name = self.name { return "☕️ \(name)" } else { return "☕️ No n..

Swift 2022.10.31

[SWIFT] 함수와 클로저

전수열님의 GitBook을 기반으로 정리합니다. 함수는 func 키워드를 사용해서 정의합니다. -> 를 사용해서 함수의 반환 타입을 지정합니다. func hello(name: String, time: Int) -> String { var string = "" for _ in 0.. String { return "\(name)님 안녕하세요!" } for _ in 0.. (String) -> String { func hello(name: String) -> String { return name + message } return hello } let hello = helloGenerator(message: "님 안녕하세요!") hello("james") 여기서 핵심은, helloGenerator() 함수의 반..

Swift 2022.10.28

[SWIFT] 옵셔널 (Optional)

전수열님의 GitBook을 기반으로 정리합니다. Swift가 가지고 있는 가장 큰 특징 중 하나가 바로 옵셔널Optional입니다. 직역하면 '선택적인' 이라는 뜻이 되는데요. 값이 있을 수도 있고 없을 수도 있는 것을 나타냅니다. 문자열의 값이 있으면 "가나다"가 될 것입니다. 그럼, 값이 없다면 ""일까요? 땡. ""도 엄연히 값이 있는 문자열입니다. 정확히는 '값이 없다'가 아니고 '빈 값'이죠. 값이 없는 문자열은 바로 nil입니다. 정수형의 값이 있으면 123과 같은 값이 있을 것입니다. 값이 없다면 0일까요? 마찬가지로 0은 0이라는 숫자 '값'입니다. 이 경우에도 값이 없는 정수는 nil입니다. 마찬가지로, 빈 배열이나 빈 딕셔너리라고 해서 '값이 없는'것이 아닙니다. 다만 '비어 있을' 뿐..

Swift 2022.10.27

[SWIFT]조건문과 반복문

전수열님의 GitBook을 기반으로 정리합니다. 조건문과 반복문 조건을 검사할 때에는 if, switch를 씁니다. 아래 코드는 if를 사용한 예시입니다. var age = 19 var student = "" if age >= 8 && age < 14 { student = "초등학생" } else if age < 17 { student = "중학생" } else if age < 20 { student = "고등학생" } else { student = "기타" } student // 고등학생 if문의 조건절에는 값이 정확하게 참 혹은 거짓으로 나오는 Bool 타입을 사용해야 합니다. 위에서 언급한 것과 같이 Swift에서는 타입 검사를 굉장히 엄격하게 하기 때문에, 다른 언어에서 사용 가능한 아래와 같은 ..

Swift 2022.10.27

[SWIFT] 변수와 상수

전수열님의 GitBook을 기반으로 정리합니다. 변수와 상수 변수(variable)는 값을 수정할 수 있고, 상수(constant)는 그렇지 않습니다. Swift에서는 언제 어디서 값이 어떻게 바뀔지 모르는 변수보다는 상수를 사용하는 것을 권장하고 있습니다. 변수는 var로 선언하고, 상수는 let으로 선언합니다. // 변수로 선언 var name = "james" // 상수로 선언 let birthyear = 2022 나중에 제가 만약 이름을 바꾸고 싶다면 바꿀 수 있어요. name = "jake" 하지만, 아래와 같이 태어난 해를 바꾸려 한다면 컴파일 에러가 발생합니다. birthyear = 2000 // 컴파일 에러! let 키워드로 선언된 상수의 값을 변경할 수 없다는 에러입니다. 이렇게, 바뀌면..

Swift 2022.10.27