본문 바로가기

# 02/Swift

[Swift] 최대공약수, 최소공배수 // 최대공약수 func gcd(_ a: Int, _ b: Int) -> Int{ if (b == 0) { return a } return gcd(b, a % b) } // 최소공배수 func lcm(_ a: Int, _ b: Int) -> Int { return a * b / gcd(a, b) }
[Swift] 소수 판별 func isPrime(num: Int) -> Bool { if(num
[Swift] Dictionary // Dictionary // var dic1 = ["key1":1, "key2":"2"] // error var dic1:[String:Any] = ["key1":1, "key2":"2"] // key는 Any 타입 안됨 // var dic2 = [:] // error var dic2:[String:Int] = [:] // 빈 Dictionary var count:Int = dic1.count var isEmpty:Bool = dic2.isEmpty // true var dic3 = ["key1":1, "key2":2, "key3":3] var value1 = dic3["key1"] // 1 var value4 = dic3["key4"] // nil var value2 = dic1["key2"] // ..
[Swift] 주석, 타입 별칭, 튜플 1. 중복 주석 허용 2. 타입 별칭 typealias MyInt = Inttypealias YourInt = Int // MyInt, YourInt 는 Int 의 또 다른 이름 이므로 같은 타입으로 취급한다. 3. 튜플 - 지정된 데이터의 묶음 // String, Int, Double 타입을 갖는 튜플var person: (String, Int, Double) = ("joy", 100, 10.3) // 인덱스를 통해서 값을 빼올 수 있다.person.0 // joy // 인덱스를 통해서 값을 할당할 수 있다.person.1 = 20 // 튜플에 이름을 붙여주면 요소의 이름을 통해 값을 빼오고 할당할 수 있다.var person: (name: String, age: Int) = ("joy", 10) pe..
[Swift] 고차함수 전달인자로 함수를 전달받거나 함수 실행의 결과를 함수로 반환하는 함수 map, filter, reduce // map // 컨테이너 내부의 기존 데이터를 변형(transform)하여 새로운 컨테이너 생성 let numbers: [Int] = [0, 1, 2, 3, 4] var doubledNumbers: [Int] var strings: [String] // for 구문 사용 doubledNumbers = [Int]() strings = [String]() for number in numbers { doubledNumbers.append(number * 2) strings.append("\(number)")} print(doubledNumbers) // [0, 2, 4, 6, 8] print(string..
[Swift] 오류처리 오류표현 Error 프로토콜과 (주로) 열거형을 통해서 오류를 표현한다. enum 오류종류이름: Error {case 종류1case 종류2case 종류3// . . .} // 자판기 동작 오류의 종류를 표현한 VendingMachineError 열거형 enum VendingMachineError: Error {case invalidInputcase insufficientFunds(moneyNeeded: Int)case outOfStock} // 함수에서 발생한 오류 던지기 // 자판기 동작 도중 발생한 오류 던지기// 오류 발생의 여지가 있는 메서드는 throws 를 사용하여// 오류를 내포하는 함수임을 표시한다. class VendingMachine { let itemPrice: Int = 100var..
[Swift] 익스텐션 익스텐션은 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능입니다. 기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 알고 있다면 그 타입의 기능을 확장할 수 도 있다. 익스텐션으로 추가할 수 있는 기능 - 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티- 타입 메서드 / 인스턴스 메서드- 이니셜라이저- 서브스크립트- 중첩 타입- 특정 프로토콜을 준수할 수 있도록 기능 추가 기존에 존재하는 기능을 재정의 할 수는 없다. 정의 문법 extention 확장할 타입 이름 {타입에 추가될 새로운 기능 구현} 익스텐션은 기존에 존재하는 타입이 추가적으로 다른 프로토콜을 채택할 수 있도록 확장할 수도 있다. extention 확장할 타입 이름: 프로토콜..
[Swift] 프로토콜 - 프로토콜은 특정 역할을 수행하기 위한 메서드, 프로퍼티, 이니셜라이저 등의 요구사항을 정의한다. - 구조체, 클래스, 열거형은 프로토콜을 채택(Adopted)해서 프로토콜의 요구사항을 실제로 구현할 수 있다. - 어떤 프로토콜의 요구사항을 모두 따르는 타입은 그 '프로토콜을 준수한다(Conform)'고 표현한다. - 프로토콜의 요구사항을 총족시키려면 프로토콜이 제시하는 기능을 모두 구현해야 한다. protocol 프로토콜 이름 {정의부} Protocol Talkable { var topic: String { get set }var language: String { get } // 메서드 요구func talk() // 이니셜라이저 요구init(topic: String, language; String)}..