본문 바로가기

앱 개발

(32)
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 19. 프로퍼티 19. 프로퍼티 정의 프로퍼티는 구조체, 클래스, 열거형 내부에 구현할 수 있다. 다만 열거형 내부에는 연산 프로퍼티만 구현할 수 있다. 연산 프로퍼티는 var로만 선언할 수 있다. struct Student { // 인스턴스 저장 프로퍼티 var name: String = "" var `class`: String = "Swift" var koreanAge: Int = 0 // 인스턴스 연산 프로퍼티 var westernAge: Int { get { return koreanAge - 1 } set(inputValue) { koreanAge = inputValue + 1 } } // 타입 저장 프로퍼티 static var typeDescription: String = "책상" /* // 인스턴스 메서드 f..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 18. 클로저 고급 18. 클로저 고급 후행 클로저 일단, 함수를 정의하자 func calculate(a: Int, b: Int, method: (Int, Int) -> Int) -> Int { return method(a, b) } var result: Int 후행 클로저는 클로저가 함수의 마지막 전달 인자라면 마지막 매개변수 이름을 생략한 후 함수 소괄호 외부에 클로저를 구현하는 것을 말한다. result = calculate(a: 10, b: 10) { (left: Int, right: Int) -> Int in return left + right } print(result) // 20 반환타입 생략 calculate 함수의 method 매개변수는 Int 타입을 반환할 것이라는 사실을 컴파일러도 알기 때문에 굳이 클로..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 17. 클로저 기본 17. 클로저 기본 정의 - 일급 시민(first-citizen) - 변수, 상수 등으로 저장, 전달인자로 전달 가능하다. - 함수: 이름이 있는 클로저이다. { (매개변수 목록) -> 반환타입 in 실행코드 } 함수를 사용하여 표기한다면: func sumFunction(a: Int, b: Int) -> Int { return a + b } var sumResult: Int = sumFunction(a: 1, b: 2) print(sumResult) // 3 클로저를 사용하여 표기한다면: var sum: (Int, Int) -> Int = { (a: Int, b: Int) -> Int in return a + b } 이고 결과는 sumResult = sum(1, 2) print(sumResult) // ..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 16. 클래스 vs 구조체 / 열거형 16. 클래스 vs 구조체 / 열거형 값 타입과 참조 타입 비교 클래스 - 전통적인 OOP 관점에서의 클래스 - 단일상속 - (인스턴스/타입) 메서드 - (인스턴스/타입) 프로퍼티 - 참조 타입 - Apple 프레임워크의 대부분의 큰 뼈대는 모두 클래스로 구성되어 있다. 구조체 - C언어 등의 구조체보다 다양한 기능을 가진다. - 상속 불가 - (인스턴스/타입) 메서드 - (인스턴스/타입) 프로퍼티 - 값 타입 - Swift 대부분의 큰 뼈대는 모두 구조체로 구성되어 있다. 열거형(Enum) - 다른 언어의 열거형과는 많이 다른 존재이다. - 상속 불가 - (인스턴스/타입) 메서드 - (인스턴스/타입) 연산 프로퍼티 - 값 타입 - Enumeration - 유사한 종류의 여러 값을 유의미한 이름으로 한 ..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 15. 열거형 15. 열거형 기존 다른 언어의 열거형과 다르게 기능이 강력하다. 정의 - enum은 타입이므로 대문자 카멜케이스를 사용하여 이름을 정의한다. - 각 case는 소문자 카멜케이스로 정의한다. - 각 case는 그 자체가 고유의 값이다. enum 이름 { case 이름1 case 이름2 case 이름3, 이름4, 이름5 ... } 열거형의 사용 enum Weekday { case mon case tue case wed case thu, fri, sat, sun } 원하는 만큼 케이스를 한 줄에 표현해도 무관하다. var day: Weekday = Weekday.mon 정식적인 표현은 위와 같지만, day = .tue 처럼 축약하여 표현할 수도 있다. 다만 타입이 명시되지 않았다면, 축약 형식으로 표현했을 ..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 14. 클래스 14. 클래스 정의 - 클래스는 참조 타입이다. - 다중 상속이 되지 않는다. class 이름 { /* 구현부 */ } 프로퍼티 및 메서드 class Sample { var mutableProperty: Int = 100 // 가변 프로퍼티 let immutableProperty: Int = 100 // 불변 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 //인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 // 재정의 불가 타입 메서드 - static static func typeMethod() { print("type method - static") } // 재정의 가능 타입 메서드..
[IOS 프로그래밍을 위한 스위프트 기초] 2단원 13. 구조체 2단원 13. 구조체 정의 Swift의 구조체는 타입을 정의하는 것이기 때문에 대문자 카멜케이스를 사용하여 정의한다. struct Sample { var mutableProperty: Int = 100 // 가변 프로퍼티 let immutableProperty: Int = 1000 // 불편 프로퍼티 static var typeProperty: Int = 100 // 타입 프로퍼티 // 인스턴스 메서드 func instanceMethod() { print("instance method") } // 타입 메서드 static fuc typeMethod() { print("type method") } } var → 가변, let → 불변 static을 붙이면 struct Sample에서 사용할 수 있는 타입 ..
[IOS 프로그래밍을 위한 스위프트 기초] Quiz 1-5 스위프트 옵셔널 퀴즈 1-5. 스위프트 옵셔널 퀴즈 1번 다음 중 오류가 발생하는 코드를 고르세요. 1) let optionalFour: Int = nil 2) let optionalTwo: Int? = optionalOne 3) let optionalOne: Int! = Int 4) let optionalThree: Int? = nil 더보기 정답: 1번 2번 다음 중 오류가 발생하는 코드를 모두 고르세요 var optionalA: Int? = nil var optionalB: Int! = nil 1) print(optionalB * 3) 2) optionalA = 100 3) optionalA = optionalB + 1 4) optionalB = optionalA 더보기 정답: 1, 3번 3번 다음 코드의 [빈칸]에 알..
[IOS 프로그래밍을 위한 스위프트 기초] Quiz 1-4 스위프트 제어구문 퀴즈 1-4. 스위프트 제어구문 퀴즈 1번 다음 코드의 실행 결과로 콘솔에 출력될 문자열을 입력해주세요. let someInteger = 50 if someInteger 0 { print("0초과") } else if someInteger > 30 { print("30초과") } else { print("50") } 출력결과:_______ 더보기 정답: 100 미만 2번 다음 코드의 실행 결과로 콘솔에 출력될 문자열로 알맞은 것을 고르세요. let someInteger = 50 case 0: print("zero") case 1..
[IOS 프로그래밍을 위한 스위프트 기초] Quiz 1-3 스위프트 함수 퀴즈 1-3. 스위프트 함수 퀴즈 1번 다음 중 오류가 발생하는 코드를 고르세요. func addOne(left a: Int, right b: Int) -> Int { return a + b } func addTwo(a: Int = 0, b: Int = 0) -> Int { return a + b } 1) addTwo(a: 10, b: 10) 2) addOne(a: 10, b: 20) 3) addTwo(b: 10) 4) addOne(left: 0, right: 0) 5) addTwo() 더보기 정답: 2번 ©️NAVER Boostcourse. All Rights Reserved.