iOS/Swift 문법 심화 학습22 inout 정의 - 함수의 파라미터는 상수이므로 함수 내부에서 파라미터의 값을 변경시킬 수 없습니다. - 함수에서 파라미터의 값을 변경하거나 함수가 값을 반환한 뒤에도 매개변수의 변화를 유지시킬 때 사용합니다. - inout 파라미터는 변수만을 취급하며, 함수의 인자로 전달될 때 반드시 &를 사용해야 합니다. 예제 - 받은 매개변수를 이름으로 출력시키는 sayName함수와 sayIntroduce함수가 있습니다. - 코드를 실행해보면, sayIntroduce 함수의 파라미터를 상수로 사용하지 않았기 때문에 오류가 발생합니다. func sayName(_ name: String){ print("안녕! 나는 \(name)이라고 해") } func sayIntroduce(_ name: String){ name = "Swif.. 2022. 2. 9. mutating 정의 - 특정 메서드 내에서 구조체 또는 열거형의 프로퍼티를 수정해야 하는 경우 해당 메서드의 동작을 변경하도록 하는 것 - 구조체는 값 타입이기때문에 인스턴스 메서드 내에서 프로퍼티를 수정할 수 없습니다. - 구조체에서 메서드를 수정하기 위해 mutating 키워드를 사용할 수 있습니다. 예제 - Friend라는 구조체를 하나 생성했습니다. - Friend구조체는 name과 age 프로퍼티, changeAge 메서드를 가지고 있습니다. - 현재 코드를 실행해보면 구조체에서 메서드 안의 값을 수정하려고 했기 때문에 오류가 발생합니다. struct Friend { let name: String var age: Int init(name: String, age: Int) { self.name = name.up.. 2022. 2. 9. 제네릭 [ Generic ] 정의 - 제네릭 코드는 유연하게 코드를 작성할 수 있습니다. - 재사용함수와 자료형을 어떤 자료형이든 사용하여 작업할 수 있도록 요구사항을 정의합니다. - 코드의 중복을 방지할 수 있습니다. - 의도를 명확하게 표현하고 추상적인 방법으로 코드를 작성할 수 있습니다. 형식 - 코드의 중복과 코드를 유연하게 작성하기 위해 로 자료형을 결정합니다. - T는 함수에 넘겨진 타입의 값으로부터 추론하여 타입을 사용됩니다. func 함수이름 (매개변수명: inout T, 매개변수명: inout T){ // 코드작성 } 예제 1 제네릭을 사용하지 않는 함수 - 다음은 제네릭을 사용하지 않은 함수의 예제입니다. - 3개의 함수 모두 동일한 기능을 갖고있지만 매개변수형만 다릅니다. - in-out 인자를 통해 두 값( a.. 2022. 2. 8. 고차함수 [ map, filter, reduce ] 정의 - 전달 인자로 함수를 전달받거나 함수 실행의 결과로 함수를 반환하는 함수입니다. - map, filter, reduce와 같은 함수가 있습니다. map - 컨테이너 내부의 기존 데이터를 변형하여 새로운 컨테이너를 생성하는 함수. 생성 - numbers라는 배열을 생성하겠습니다. - numbers 배열의 요소들을 변경하기 위한 doubledNumbers, strings 변수를 생성하겠습니다. let numbers: [Int] = [0, 1, 2, 3, 4] var doubledNumbers: [Int] var strings: [String] 사용 - map 메서드를 사용하는 방식은 다음과 같습니다. - numbers에 map 메서드를 호출하고 map의 전달 인자 자리에 클로저를 사용했습니다. - m.. 2022. 2. 7. 오류 처리 [ error handling ] 정의 - 오류처리는 프로그램에서 발생한 에러를 받고 대응하는 과정입니다. - Swift에서 오류를 표기하는 방법으로 Error 프로토콜과 열거형을 사용합니다. 오류 표현 enum 오류종류이름: Error { case 종류1 case 종류2 case 종류3 ... } 오류처리 예제 오류처리 생성 - 자판기가 일으킬 수 있는 오류사항을 표현한 VendingMachineError 열거형 - 오류사항은 다음과 같습니다. 더보기 1, 금액 투입의 오류 2, 잔액 부족 3, 품절 enum VendingMachineError: Error { case invalidInput case insufficientFunds(moneyNeeded: Int) case outOfStock } 클래스 생성 class VendingMa.. 2022. 2. 4. 열거형 [ enum ] 정의 - 같은 주제로 연관된 데이터들을 멤버로 구성하여 나타내는 자료형입니다. - Swift에서 열거형은 각각의 case가 고유의 값으로 취급 됩니다. - enum은 타입이므로 대문자 카멜케이스를 사용해 이름을 정의합니다. 정의형식 enum 이름 { // case 이름1 // case 이름2 // case 이름3, 이름4, 이름5 // ... } 열거형 예제 열거형 생성 - 한 줄에 case 하나를 작성할 수 있습니다. - 한 줄에 연속된 여러가지 case를 작성할 수도 있습니다. enum Weekday{ case mon case tue case wed case thu, fri, sat, sun } 열거형 사용 - 열거형의 케이스를 나타내는 문법으로 열거형 타입으로 적어주고 . 뒤에 케이스 이름을 작성하.. 2022. 2. 3. 이전 1 2 3 4 다음