지난번에는 기본적인 데이터 타입, 함수, 조건문, 반복문, 옵셔널, 구조체 등을 살펴보았습니다.
이번 포스팅에서는 프로토콜, 클로저, 예외 처리를 간략히 알아보겠습니다.
프로토콜
Swift에서는 프로토콜이라는 개념이 있는데요. 프로토콜은 인터페이스와 비슷한 개념으로, 클래스나 구조체 등에서 특정 기능을 구현하도록 강제할 수 있습니다. 프로토콜을 사용하면 객체의 다형성을 쉽게 구현할 수 있습니다.
protocol Vehicle { var numberOfWheels: Int { get } var color: String { get set } func startEngine() func stopEngine() } // 프로토콜 정의 class Car: Vehicle { var numberOfWheels: Int = 4 var color: String = "Blue" func startEngine() { print("Car engine started.") } func stopEngine() { print("Car engine stopped.") } } // 클래스에서 프로토콜 적용 // 사용 예 let myCar = Car() myCar.startEngine() // 출력: Car engine started. myCar.stopEngine() // 출력: Car engine stopped. print(myCar.numberOfWheels) // 출력: 4 print(myCar.color) // 출력: Blue myCar.color = "Red" print(myCar.color) // 출력: Red
클로저
Swift에서는 클로저라는 개념을 제공합니다. 클로저는 함수와 비슷한 개념으로, 일반 함수와 다르게 이름이 없는 익명 함수입니다. 클로저는 코드 블록으로, 매개변수를 받을 수 있고, 반환값을 가질 수 있습니다. 간결한 코드 작성에 유용합니다.
클로져 | 함수 | |
문법 | 중괄호 { } 로 둘러싸인 매개 변수 목록과 본문으로 구성 | func 키워드로 시작하고 함수 이름과 매개 변수 목록, 반환 타입, 함수 본문으로 구성 |
이름 | 이름이 없음 | 이름 있음, 호출시 이름 사용 |
캡처 | 정의된 문맥에서 변수나 상수를 캡처할 수 있음 | 캡처기능없음 |
반환 | 반환값 가질 수 있음 | 반환값 가질 수 있음 |
사용 | 변수나 상수에 할당하여 사용할 수 있음, 다만 간단한 로직이나 조건에 맞춰 실행되는 작은 코드 블럭에 사용됨 | 변수나 상수에 할당하여 사용할 수 있음 |
// 내림차순으로 정렬하는 클로저 let reverseOrder = { (num1: Int, num2: Int) -> Bool in return num1 > num2 } // 정수 배열을 내림차순으로 정렬 numbers.sort(by: reverseOrder) // 정렬된 결과 출력 print(numbers) // [9, 7, 5, 3, 1] // * 클로저 내부에서 외부 변수 변경하기 var counter = 0 let incrementCounter = { counter += 1 } incrementCounter() // counter = 1 incrementCounter() // counter = 2 incrementCounter() // counter = 3 print("counter: \(counter)") // "counter: 3"
에러 처리
Swift도 대부분의 언어와 마찬가지로, 에러 처리를 위한 기능을 제공합니다. 에러 처리는 do-catch 문을 사용하여 구현할 수 있으며, throwing 키워드를 사용하여 함수에서 발생하는 에러를 처리할 수 있습니다.
// Swift 에러 처리 enum CalculationError: Error { case divisionByZero } func divideNumbers(_ num1: Int, _ num2: Int) throws -> Int { if num2 == 0 { throw CalculationError.divisionByZero } return num1 / num2 } // 에러 처리 예시 do { let result = try divideNumbers(10, 0) print(result) } catch CalculationError.divisionByZero { print("Cannot divide by zero.") }
마무리
지금 까지, Swift 기초 문법을 살펴보았는데요. 도움이 되셨나요?
Swift는 최신 프로그래밍 언어로서, 안전하고 강력한 기능을 제공합니다. 초보자도 쉽게 배울 수 있는 간결하고 깔금한 문법과 다양한 레퍼런스 자료가 많이 제공되고 있습니다. 또한 Swift 를 기반으로 SwiftUI라는 앱 개발을 위한 프레임워크가 발표되어 앱 개발이 한층 쉬워졌습니다. Swift를 이용한 애플리케이션 개발을 시작해 보면 어떨까요?
감사합니다.